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
'programing' 카테고리의 다른 글
여러 @Suppress Warnings 주석 조합 - Eclipse Indigo (0) | 2022.08.02 |
---|---|
Vuej에 대한 성능 메트릭 (0) | 2022.08.02 |
Vue 인스턴스의 수명 주기 이해 (0) | 2022.08.01 |
HTTPS를 통한 HttpClient를 사용한 모든 인증서 신뢰 (0) | 2022.08.01 |
C#과 C - 퍼포먼스의 큰 차이 (0) | 2022.08.01 |