关于java:从JFileChooser获取用户输入的文件名

Get user inputted file name from JFileChooser

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

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

举个例子:jfilechooser中的当前目录可能是"c:ac"用户输入的值可能是"def.txt"

.getselectedfile()返回"c:acdef.txt".getselectedfile().getname()返回"f.txt"

但是我希望像.getinpuntedFile()这样的东西返回"def.txt"

有没有这样的解决方案,或者我需要扩展jFileChooser?


输入值"def.txt"是相对路径。.getSelectedFile()返回"c:acdef.txt"是逻辑,因为指定的路径追加到当前目录。如果指定一个绝对路径,那么它肯定不会被连接。


据我所知,从所选文件中检索相对路径没有内置方法(但我可能是错的)。

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

1
2
3
4
5
6
7
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参数,如果所选文件位于current文件夹的子目录中,则返回带有相对路径的String。否则,它将返回给定文件的绝对路径。所以这个方法不会返回像../../dir/subdir/file.txt这样的相对路径。

这个解决方案与这个答案有很大的相似之处。