4

我尝试使用在此处找到的代码重命名文件:

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

现在,我所做的是:

  private void stFiles() {
    System.out.println("sorting");
    File f = new File (getName());
    name = getName() + counter.toString();
    System.out.println(f.getName());
    File newFile = new File(f.getParent(), getName()+ ".jpg");
    try {
        Files.move(f, newFile);
    } catch (IOException ex) {
        System.out.println("made file");
    }
    counter +=1;
}

现在,我得到了“制作文件”打印,这意味着有一个 IO 异常。然而,堆栈跟踪是不可读的。

这可能是什么原因?

4

3 回答 3

3

您可以使用 File 对象中已存在的 renameTo 方法,如下所示:

File myOriginalFile=new File("myOriginalFile.txt");
    File myChangedFile=new File("myChangedFile.txt");



    if(myOriginalFile.renameTo(myChangedFile)){
        System.out.println("Rename operation succesful");
    }else{
        System.out.println("Rename operation failed");
    }
于 2013-09-12T06:29:09.347 回答
1

如果您的文件位于 Windows 共享上,则使用该File.renameTo()方法可能会遇到问题。

更强大的解决方案是使用 Apache Commons IO FileUtils.moveFile()

于 2013-09-12T06:51:11.213 回答
1

首先,Java 允许您使用 java.io.File 类中的 renameTo(File file) 方法重命名文件。

首先,获取对要重命名的文件的引用。其次,使用 File 参数对该引用调用 renameTo() 方法。假设您有一个名为 file1.txt 的文件,并且您想将其重命名为 file2.txt。

下面的代码行显示了它是如何完成的:

//Obtain the reference of the existing file
File oldFile = new File("file1.txt"); 

//Now invoke the renameTo() method on the reference, oldFile in this case
oldFile.renameTo(new File("file2.txt"));
于 2013-09-12T06:40:08.087 回答