programing

Java를 사용하여 파일 이름 변경

firstcheck 2022. 8. 1. 21:35
반응형

Java를 사용하여 파일 이름 변경

을 「 「 」로 할 수 ?test.txt로로 합니다.test1.txt

iftest1.txt요?

기존 test1로 이름을 바꾸려면 어떻게 해야 하나요?txt 파일로 테스트의 새로운 내용을 지정합니다.txt는 나중에 사용하기 위해 추가됩니까?

http://exampledepot.8waytrips.com/egs/java.io/RenameFile.html에서 복사

// File (or directory) with old name
File file = new File("oldname");

// File (or directory) with new name
File file2 = new File("newname");

if (file2.exists())
   throw new java.io.IOException("file exists");

// Rename file (or directory)
boolean success = file.renameTo(file2);

if (!success) {
   // File was not successfully renamed
}

새 파일에 추가하려면:

java.io.FileWriter out= new java.io.FileWriter(file2, true /*append=yes*/);

요컨대:

Files.move(source, source.resolveSibling("newname"));

상세:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

다음은 http://docs.oracle.com/javase/7/docs/api/index.html 에서 직접 복사한 것입니다.

파일명을 「newname」으로 변경해, 같은 디렉토리에 보존한다고 합니다.

Path source = Paths.get("path/here");
Files.move(source, source.resolveSibling("newname"));

또는 파일을 새 디렉토리로 이동하여 동일한 파일 이름을 유지하고 디렉토리 내의 해당 이름의 기존 파일을 대체한다고 가정합니다.

Path source = Paths.get("from/path");
Path newdir = Paths.get("to/path");
Files.move(source, newdir.resolve(source.getFileName()), StandardCopyOption.REPLACE_EXISTING);

이름 변경을 이용하다File 객체에 대한 메서드입니다.

먼저 대상을 나타내는 File 개체를 만듭니다.그 파일이 존재하는지 확인합니다.파일이 존재하지 않는 경우 이동할 파일의 새 파일 개체를 만듭니다.이름 변경 호출이동할 파일을 메서드화하고 이름 변경에서 반환된 값을 확인하려면콜이 성공했는지 확인합니다.

한 파일의 내용을 다른 파일에 추가할 경우 여러 기록기를 사용할 수 있습니다.확장자를 보면 평문인 것 같기 때문에 FileWriter를 보겠습니다.

Java 1.6 이하에서는 Guava의 Files.move가 가장 안전하고 깨끗한 API라고 생각합니다.

예:

File newFile = new File(oldFile.getParent(), "new-file-name.txt");
Files.move(oldFile.toPath(), newFile.toPath());

첫 번째 행은 새 파일의 위치가 이전 파일의 상위 디렉토리인 동일한 디렉토리임을 확인합니다.

편집: Java 7을 사용하기 전에 작성했습니다.Java 7은 매우 유사한 접근방식을 도입했습니다.따라서 Java 7+를 사용하는 경우 kr37의 답변을 확인하고 업그레이드해야 합니다.

파일을 새 이름으로 이동하여 파일 이름 바꾸기(FileUtils는 Apache Commons IO lib에서 사용)

  String newFilePath = oldFile.getAbsolutePath().replace(oldFile.getName(), "") + newName;
  File newFile = new File(newFilePath);

  try {
    FileUtils.moveFile(oldFile, newFile);
  } catch (IOException e) {
    e.printStackTrace();
  }

파일 이름을 쉽게 변경할 수 있습니다.

        File oldfile =new File("test.txt");
        File newfile =new File("test1.txt");

        if(oldfile.renameTo(newfile)){
            System.out.println("File renamed");
        }else{
            System.out.println("Sorry! the file can't be renamed");
        }
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardCopyOption.*;

Path yourFile = Paths.get("path_to_your_file\text.txt");

Files.move(yourFile, yourFile.resolveSibling("text1.txt"));

기존 파일을 "text1" 이름으로 바꿉니다.txt":

Files.move(yourFile, yourFile.resolveSibling("text1.txt"),REPLACE_EXISTING);

시험해 보다

File file=new File("Your File");
boolean renameResult = file.renameTo(new File("New Name"));
// todo: check renameResult

주의: 이름 변경은 항상 확인해야 합니다.플랫폼에 따라 파일 이름 변경(운영 체제 및 파일 시스템)이 다르므로 파일 이름 변경에 실패해도 IO 예외가 발생하지 않으므로 파일 이름 변경에 성공했는지 확인하기 위해 값을 반환합니다.

네, File.renameTo()를 사용할 수 있습니다.그러나 새 파일로 이름을 바꿀 때는 올바른 경로를 사용해야 합니다.

import java.util.Arrays;
import java.util.List;

public class FileRenameUtility {
public static void main(String[] a) {
    System.out.println("FileRenameUtility");
    FileRenameUtility renameUtility = new FileRenameUtility();
    renameUtility.fileRename("c:/Temp");
}

private void fileRename(String folder){
    File file = new File(folder);
    System.out.println("Reading this "+file.toString());
    if(file.isDirectory()){
        File[] files = file.listFiles();
        List<File> filelist = Arrays.asList(files);
        filelist.forEach(f->{
           if(!f.isDirectory() && f.getName().startsWith("Old")){
               System.out.println(f.getAbsolutePath());
               String newName = f.getAbsolutePath().replace("Old","New");
               boolean isRenamed = f.renameTo(new File(newName));
               if(isRenamed)
                   System.out.println(String.format("Renamed this file %s to  %s",f.getName(),newName));
               else
                   System.out.println(String.format("%s file is not renamed to %s",f.getName(),newName));
           }
        });

    }
}

}

파일 이름만 변경하는 경우 File.renameTo()사용할 수 있습니다.

두 번째 파일의 내용을 첫 번째 파일에 추가할 경우 추가 생성자 옵션이 있는 FileOutputStream 또는 FileWriter에 대한 동일한 내용을 확인하십시오.출력 스트림/라이터를 사용하여 추가할 파일의 내용을 읽고 써야 합니다.

내가 알기로는 파일 이름을 바꾸더라도 대상 이름을 가진 기존 파일의 내용에 추가되지 않습니다.

Java에서의 파일 이름 변경에 대해서는, 다음의 메뉴얼을 참조해 주세요.renameTo()수업 중 방법File.

Files.move(file.toPath(), fileNew.toPath()); 

는 동작합니다만, 사용중의 자원을 모두 닫았을 때(또는 자동 소실했을 때)에만 유효합니다.InputStream,FileOutputStream등) 같은 상황이라고 생각합니다.file.renameTo또는FileUtils.moveFile.

다음은 폴더의 여러 파일 이름을 변경하는 코드입니다.

public static void renameAllFilesInFolder(String folderPath, String newName, String extension) {
    if(newName == null || newName.equals("")) {
        System.out.println("New name cannot be null or empty");
        return;
    }
    if(extension == null || extension.equals("")) {
        System.out.println("Extension cannot be null or empty");
        return;
    }

    File dir = new File(folderPath);

    int i = 1;
    if (dir.isDirectory()) { // make sure it's a directory
        for (final File f : dir.listFiles()) {
            try {
                File newfile = new File(folderPath + "\\" + newName + "_" + i + "." + extension);

                if(f.renameTo(newfile)){
                    System.out.println("Rename succesful: " + newName + "_" + i + "." + extension);
                } else {
                    System.out.println("Rename failed");
                }
                i++;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

예를 들어 다음과 같이 실행합니다.

renameAllFilesInFolder("E:\\Downloads\\Foldername", "my_avatar", "gif");

저는 java.io을 좋아하지 않습니다.File.renameTo(...)는 파일 이름이 변경되지 않을 수 있으며 그 이유를 알 수 없습니다.거짓이 사실로 돌아온다.실패해도 예외가 발생하지 않습니다.

한편, java.nio.file 입니다.files.move(...)는 실패 시 예외를 발생시키기 때문에 더 유용합니다.

실행 코드는 여기 있습니다.

private static void renameFile(File fileName) {

    FileOutputStream fileOutputStream =null;

    BufferedReader br = null;
    FileReader fr = null;

    String newFileName = "yourNewFileName"

    try {
        fileOutputStream = new FileOutputStream(newFileName);

        fr = new FileReader(fileName);
        br = new BufferedReader(fr);

        String sCurrentLine;

        while ((sCurrentLine = br.readLine()) != null) {
            fileOutputStream.write(("\n"+sCurrentLine).getBytes());
        }

        fileOutputStream.flush();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            fileOutputStream.close();
            if (br != null)
                br.close();

            if (fr != null)
                fr.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

언급URL : https://stackoverflow.com/questions/1158777/rename-a-file-using-java

반응형