我正在用 java 创建一个文件管理器。我在尝试重命名文件和文件夹时遇到问题。我从用户输入中获取新文件名,然后尝试重命名文件。
popupMenu.rename.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e) {
list.getSelectedValue().toString();
JFrame frame = new JFrame("Rename");
final JTextField textField=new JTextField();
String s = null;
File file2 = new File("newname");
textField.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
s = textField.getText();
}
});
Object o = list.getModel().getElementAt(list.getSelectedIndex());
File file = new File(o.toString());
//FileUtils.moveFile(file, newFile);
file.renameTo(file2);
//Files.move(file.toPath(),file.toPath().resolveSibling(textField.getText()));
frame.add(textField);
frame.setLocationRelativeTo(frame);
frame.setSize(200,60);
frame.setVisible(true);
}
});
请指出我犯的任何错误。
此外,有没有一种方法可以通过单击文本将文件重命名为类似于 Windows。我正在通过 setText(fileName); 显示文件和文件夹名称。这是我的项目屏幕截图
最佳答案
问题是这一行:
file.renameTo(file2);
您没有查看返回值,因此如果失败,您的代码就像成功一样。
java.io.File 已过时。它是 Java 1.0 的遗留物,它有一些不太理想的设计决策。其中包括决定让 File 类的许多方法返回一个值,就像 C 库所做的那样,而不是在失败时抛出异常。
将该行代码更改为:
Files.move(file.toPath(), file2.toPath());
编译器会告诉你必须捕获 IOException。这是一件好事。不要编写一个空的catch
block ——该异常会告诉您重命名文件失败的确切原因。至少,catch block 应该在捕获到异常时调用 printStackTrace()
。
关于java - 如何在 java 文件管理器应用程序中重命名文件和文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33630577/