使用Java重命名文件

我们可以重命名文件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")); 

或者,假设我们要将文件移动到新目录,保持相同的文件名,并replace该目录中的任何现有文件:

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

你想在File对象上使用renameTo方法。

首先,创build一个File对象来表示目标。 检查该文件是否存在。 如果不存在,请为要移动的文件创build一个新的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(); } 

这是重命名文件的简单方法:

  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"); } 

如果只是重命名该文件,则可以使用File.renameTo() 。

在想要将第二个文件的内容附加到第一个文件的情况下, 使用append构造函数选项查看FileOutputStream,或者使用FileWriter的相同内容 。 您需要读取文件的内容,使用输出stream/写入器将其附加写出。

 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")); 

replace名称为“text1.txt”的现有文件:

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

据我所知,重命名文件不会将其内容追加到具有目标名称的现有文件的内容。

关于在Java中重命名文件,请参阅File类中的renameTo()方法的File

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

工作,但只有当你closures(或autoclose)所有使用的资源( InputStreamFileOutputStream等)我认为与file.renameTofile.renameTo相同的情况。

运行代码在这里。

 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(); } } }