我有很多这样D:\just\a\path
的字符串,字符串的元素数量可能不同,也许C:\just\another\longer\path
.
我想得到最后一个元素path
。我尝试使用substring
:
myString.substring(myString.lastIndexOf("/")+1)
和Path
:
nameo1 = Paths.get(string).getName(Paths.get(string).getNameCount() -1); //-1 because of root
但第二种方法似乎不适用于所有操作系统。
我的问题是:有没有更好、更优雅的方法来获得我想要的东西?
注意:最后一个元素是目录、文件夹,而不是文件。所以new File(string).getName()
不会工作,只是什么都不返回。
编辑:这是我的错。有时字符串是空的,所以它什么都不返回。花了我一个小时来处理它。Edit2:某些文件路径包含空格,因此此方法返回一个空字符串
您可以(现在应该)使用java.nio.file.Path.getFileName()
,它对于文件或目录的路径是这样工作的(无论String
结尾是否以反斜杠结尾):
public static void main(String[] args) {
String pathStringToAFile = "U:\\temp\\TestOutput\\TestFolder\\test_file.txt";
String pathStringToAFolder = "U:\\temp\\TestOutput\\TestFolder";
String pathStringToAFolderWithTrailingBackslash = "U:\\temp\\TestOutput\\TestFolder\\";
Path pathToAFile = Paths.get(pathStringToAFile);
Path pathToAFolder = Paths.get(pathStringToAFolder);
Path pathToAFolderWithTrailingBackslash
= Paths.get(pathStringToAFolderWithTrailingBackslash);
System.out.println(pathToAFile.getFileName().toString());
System.out.println(pathToAFolder.getFileName().toString());
System.out.println(pathToAFolderWithTrailingBackslash.getFileName().toString());
}
这输出
test_file.txt
TestFolder
TestFolder
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句