Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java获取无子字符串的文件扩展名_Java_File Extension - Fatal编程技术网

Java获取无子字符串的文件扩展名

Java获取无子字符串的文件扩展名,java,file-extension,Java,File Extension,如何在Java中获得文件扩展名而不使用愚蠢的lastIndexOf('.')等?这可能是最简单的方法(还要注意,根据上下文,它不一定正确,例如“.tar.gz”) 您还可以根据字符拆分字符串,并获取最后一段,但这似乎同样困难 您试图避免使用substring和lastIndexOf,有什么特别的原因吗?apache Commons库有 您可以查看源代码,然后开始 至少检查一下它们的实现情况。这很简单,它们正确地处理dir.ext/file,要处理类似file.tar.gz的内容,如果要提取.ta

如何在Java中获得文件扩展名而不使用愚蠢的
lastIndexOf('.')
等?

这可能是最简单的方法(还要注意,根据上下文,它不一定正确,例如“.tar.gz”)

您还可以根据
字符
拆分
字符串,并获取最后一段,但这似乎同样困难


您试图避免使用
substring
lastIndexOf
,有什么特别的原因吗?

apache Commons库有

您可以查看源代码,然后开始


至少检查一下它们的实现情况。这很简单,它们正确地处理dir.ext/file,要处理类似file.tar.gz的内容,如果要提取.tar.gz而不仅仅是.gz,则需要一个特例。

不想包含外部库吗?使用正则表达式:

String extension = filename.replaceAll("^.*\\.([^.]+)$", "$1");


Files.getFileExtension(“some.txt”)

我解释说,他想要的是文件扩展名本身,而不是没有扩展名的名称。仍然有一个方法(
getExtension
),但请阅读它的作用:“返回文件名最后一个点后的文本部分。”这正是他已经在做的事情;仅仅为相同的功能添加一个完整的库/依赖项是没有意义的(除非他已经在使用Apache Commons)。@JonathanNewmuis,也就是说,关于我的方法混搭是正确的。我相信
getExtension
的实现比简单地包装
lastIndexOf
要彻底一些,原因是您自己的答案地址,例如dir.ext/file。不幸的是,这不是一个标准库,所以对于这个问题,我使用了lastIndexOf可能的不可能的副本。任何解决方案都可以使用lastIndexOfA,了解一下为什么
lastindexof
不是您想要的或者对您不起作用-当然我知道这种方法也有问题,但是稍微了解一下您为什么要寻找另一种方法可能会有所帮助。我想其他库也会遵循同样的方法。事实上,FileNameUtils使用相同的机制。但我想知道你为什么不想那样。你认为它在某些情况下会失败吗。如果是这样的话,你能用这个例子说明一个失败的例子吗?恐怕里面没有这样的方法,我猜你是指google的@A4L谢谢你指出这一点,我被这个类的java.lang包搞糊涂了☺