java怎么从键盘上输入文件名_关于java:从JFileChooser获取用户输入的文件名

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

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

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

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

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

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

这是因为我们希望用户能够输入一个文件名,例如:server1dirxx.dat server2xx.dat,如果我们检测到他们手动输入了这些名称(而不是某个目录刚好是这个名称),我们将使用它作为"绝对路径",并以我们自己的方式处理它。

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

我知道。我在问是否有一种方法只获取用户输入的内容。

这是没有意义的。文件选择器始终应返回所选文件的绝对路径。用户输入的内容,并不那么重要。绝对文件路径应该足够了。

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

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

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这样的相对路径。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值