如何在Java中获取没有扩展名的文件对象的名称?

2022-09-02 00:06:33

我试图在没有扩展名的情况下获取对象的名称,例如,当文件名为“vegetation”时,获取“vegetation.txt”。我尝试过实现此代码:File

openFile = fileChooser.getSelectedFile();
String[] tokens = openFile.getName().split(".");
String name = tokens[0];

不幸的是,它返回一个对象。我猜,只是在定义对象时存在问题,因为该方法可以正常工作;它给了我文件的名称及其扩展名。nullStringgetName()

你有什么想法吗?


答案 1

如果您想自己实现此功能,请尝试以下操作:

String name = file.getName();
int pos = name.lastIndexOf(".");
if (pos > 0) {
    name = name.substring(0, pos);
}

(此变体不会为输入文件名(如“.txt”)留下空字符串。如果希望在这种情况下字符串为空,请更改为 。)> 0>= 0


您可以使用条件表达式将语句替换为赋值,如果您认为它使代码更具可读性;例如,请参阅@Steven的答案。(我不认为它确实如此...但这是一个意见问题。if


使用其他人编写和测试的实现可以说是一个更好的主意。Apache FilenameUtils是一个不错的选择;请参阅@slachnick的答案,以及链接的问答。


答案 2

如果你不想自己写这段代码,你可以使用Apache的文件名Utils

FilenameUtils.getBaseName(openFile.getName());

这将返回文件名减去路径和扩展名。