JFileChooser返回错误的文件名?

时间:2011-12-02 00:22:36

标签: java file swing jfilechooser

final JFileChooser fc = new JFileChooser();
int returnVal = fc.showOpenDialog(this);

if (returnVal == JFileChooser.APPROVE_OPTION) {
    String fileName = fc.getSelectedFile().getName();
    String path = (new File(fileName)).getAbsolutePath();
}

我得到的绝对路径是项目目录和 fileName 的串联!

3 个答案:

答案 0 :(得分:2)

JFileChooser.getSelectedFile()返回File个对象。

为什么要获取文件名并再次实例化新的File对象?

你可以尝试:

fc.getSelectedFile().getAbsolutePath();

答案 1 :(得分:2)

这就是getAbsolutePath()所做的 - 获取完整路径,包括驱动器号(如果你在Windows上),等等。你想要得到什么,只是文件名?

初始化File对象后,您只能从中获取文件名,或者您可以使用JFileChooser.getSelectedFile()

如果您收到/path/to/filefilename但期望/path/to/file/filename,则可以根据需要在路径中添加额外的斜杠。

答案 2 :(得分:2)

不确定。因为您使用返回的文件名创建了新文件new File(fileName),这意味着相对路径。请改用fc.getSelectedFile().getPath()fc.getSelectedFile().getAbsolutePath()