우리는 파일 말의 이름을 바꿀 수 있습니다 test.txt
에를 test1.txt
?
경우 test1.txt
는 이름을 바꿀 것입니다 존재?
기존의 test1.txt 파일로 이름을 바꾸어 나중에 사용할 수 있도록 test.txt의 새 내용을 추가하려면 어떻게해야합니까?
우리는 파일 말의 이름을 바꿀 수 있습니다 test.txt
에를 test1.txt
?
경우 test1.txt
는 이름을 바꿀 것입니다 존재?
기존의 test1.txt 파일로 이름을 바꾸어 나중에 사용할 수 있도록 test.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;
다음은 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()), REPLACE_EXISTING);
File 객체 에서 renameTo 메서드 를 사용하려고 합니다.
먼저 대상을 나타내는 File 객체를 만듭니다. 해당 파일이 있는지 확인하십시오. 존재하지 않는 경우 파일을 이동할 새 File 객체를 만듭니다. 이동할 파일에서 renameTo 메소드를 호출하고 renameTo에서 리턴 된 값을 확인하여 호출이 성공했는지 확인하십시오.
한 파일의 내용을 다른 파일에 추가하려면 사용 가능한 여러 작성자가 있습니다. 확장명을 기반으로 일반 텍스트처럼 들리므로 FileWriter를 살펴 보겠습니다 .
Java 1.6 이하의 경우, 가장 안전하고 깨끗한 API는 Guava의 Files.move 입니다.
예:
File newFile = new File(oldFile.getParent(), "new-file-name.txt");
Files.move(oldFile.toPath(), newFile.toPath());
첫 번째 줄은 새 파일의 위치가 동일한 디렉토리, 즉 이전 파일 의 상위 디렉토리인지 확인 합니다.
편집 : 나는 매우 유사한 접근 방식을 도입 한 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();
}
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
참고 : 우리는 항상 renameTo 반환 값을 확인하여 플랫폼에 따라 다르기 때문에 (다른 운영 체제, 다른 파일 시스템) 이름 바꾸기 파일이 성공적인지 확인해야합니다. 이름 바꾸기가 실패하면 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 () 사용할 수 있습니다 .
두 번째 파일의 내용을 첫 번째 파일에 추가하려는 경우 추가 생성자 옵션 또는 FileWriter와 동일한 항목으로 FileOutputStream을 살펴보십시오 . 출력 스트림 / 작성기를 사용하여 파일 내용을 추가하고 작성하려면 파일의 내용을 읽어야합니다.
다음은 폴더의 여러 파일 이름을 성공적으로 바꾸는 코드입니다.
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");
실행 코드가 여기 있습니다.
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();
}
}
}