从JFileChooser获取用户输入的文件名

时间:2014-11-21 13:02:46

标签: java swing filenames jfilechooser

我有一个奇怪的情况,我想在JFileChooser中对用户输入的文件名值进行测试。

.getSelectedFile()函数根据用户输入的文件名值和不是我想要的目录返回一个文件。

举个例子: JFileChooser中的当前目录可能是" C:\ a \ b \ c" 用户输入的值可能是" d \ e \ f.txt"

.getSelectedFile()返回" C:\ a \ b \ c \ d \ e \ f.txt" .getSelectedFile()。getName()返回" f.txt"

我希望像.getInputtedFile()这样的东西返回" d \ e \ f.txt"

是否有这样的可用解决方案,还是我必须扩展JFileChooser?

2 个答案:

答案 0 :(得分:1)

输入的值" d \ e \ f.txt"是相对路径。逻辑是.getSelectedFile()返回" C:\ a \ b \ c \ d \ e \ f.txt",因为指定的路径被附加到当前目录。如果指定绝对路径,请确保它不会连接。

答案 1 :(得分:0)

据我所知,没有构建方法可以从所选文件中检索相对路径(但我可能错了)。

但是你可以通过创建这样的方法来帮助自己:

public static String getRelativeSubdirectory(final File file) {
    final File currentFolder = new File("");
    if (file.getAbsolutePath().startsWith(currentFolder.getAbsolutePath())) {
        return file.getAbsolutePath().substring(currentFolder.getAbsolutePath().length() + 1);
    }
    return file.getAbsolutePath();
}

如果所选文件位于File文件夹的子目录中,则此方法接受String参数并返回带有相对路径的current。如果不是,它将返回给定文件的绝对路径。因此,此方法不会返回../../dir/subdir/file.txt等相对路径。

此解决方案与此answer有很大的相似之处。