在Java中重命名文件

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

现在,我得到了“made file”打印,这意味着存在IO异常。然而,堆栈跟踪是不可读的。这可能是什么原因?

7
System.out.println("made file"); 在你的Exception处理程序中,意味着出现了意外情况。尝试在System.out.println行下添加ex.printStackTrace(); - MadProgrammer
1
检查你收到的IOException消息(通过调试或将System.out.println更改为ex.printStackTrace())。这将告诉你问题所在。 - joscarsson
为什么不使用 File.renameTo() - Qben
2
“name”变量是用来做什么的?你有没有忘记在任何地方使用它? - Amin Abu-Taleb
1
不是,但现在它可以工作了 - 我忘记附加 .jpg 了。 - newnewbie
显示剩余2条评论
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");
    }

1

首先,Java允许您使用java.io.File类中的renameTo(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"));

1
如果您的文件存储在Windows共享中,使用File.renameTo()方法可能会遇到问题。更可靠的解决方案是使用Apache Commons IO FileUtils.moveFile()

那个问题也会适用于我所做的吗? - newnewbie
我昨天在 Windows 系统上检查了一下,显然没有任何问题。 - newnewbie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接