我有一个奇怪的情况,我想在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?
答案 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有很大的相似之处。