Java - 如何从绝对路径中获取文件名并删除其文件扩展名?

Posted

技术标签:

【中文标题】Java - 如何从绝对路径中获取文件名并删除其文件扩展名?【英文标题】:Java - How to get the name of a file from the absolute path and remove its file extension? 【发布时间】:2012-08-07 06:47:49 【问题描述】:

我这里有个问题,我有一个包含值 C:\Users\Ewen\AppData\Roaming\MyProgram\Test.txt 的字符串,我想删除 C:\Users\Ewen\AppData\ Roaming\MyProgram\ 以便只剩下测试。所以问题是,我怎样才能删除字符串的任何部分。

感谢您的宝贵时间! :)

【问题讨论】:

您是在更一般的方向询问如何删除部分字符串,还是专门针对包含文件路径的字符串? 【参考方案1】:

如果您严格使用文件路径,试试这个

String path = "C:\\Users\\Ewen\\AppData\\Roaming\\MyProgram\\Test.txt";
File f = new File(path);
System.out.println(f.getName()); // Prints "Test.txt"

谢谢,但我也想删除 .txt

好吧,试试这个

String fName = f.getName();
System.out.println(fName.substring(0, fName.lastIndexOf('.')));

请参阅this 了解更多信息。

【讨论】:

谢谢,但我也想删除 .txt @mre haha​​ 这正是我在回答 D 时试图避免的: @mre, fName.substring(fName.lastIndexOf('.')) 就足够了。 为避免使用 File(),请使用:path.substring( path.lastIndexOf('\\')+1, path.lastIndexOf('.') )【参考方案2】:

String 类具有处理此问题的所有必要能力。您可能感兴趣的方法:

String.split()String.substring()String.lastIndexOf()

这里描述了这 3 个以及更多:http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html

考虑一下,你很快就会让它工作:)。

【讨论】:

如果您严格使用文件路径,我认为使用 File 类而不是 String.split 来解析文件名更容易。 比较容易,但我认为我们不应该给某人提供这样的捷径(涉及额外的对象,并在语义上处理问题直接域之外的类型,即字符串)那首先会问这个问题:)当:而不是/划定他的路径时他会做什么? 嗯,你说得对,我的解决方案既不灵活也不优雅,但它很简洁! :D 哦,不,我认为您的方法比我的方式更优雅(简洁 = 大多数时候都优雅!)。实际上我会自己按照你的方式做,只是不太有教育意义:(【参考方案3】:

我建议使用FilenameUtils.getBaseName(String filename)。 FilenameUtils 类是 Apache Commons IO 的一部分。

根据文档,该方法“将处理 Unix 或 Windows 格式的文件”。 “返回最后一个正斜杠或反斜杠之后和最后一个点之前的文本”作为 String 对象。

String filename = "C:\\Users\\Ewen\\AppData\\Roaming\\MyProgram\\Test.txt";
String baseName = FilenameUtils.getBaseName(filename);
System.out.println(baseName);

上面的代码打印Test

【讨论】:

你能再解释一下吗? @DieterMeemken:我在回答中添加了一个示例。

以上是关于Java - 如何从绝对路径中获取文件名并删除其文件扩展名?的主要内容,如果未能解决你的问题,请参考以下文章

普通JAVA类 如何获取,WEB项目的根路径

Bash:从作为输入给出的相对路径中获取绝对路径

Qt 和 Android - 从图库中的图像获取路径

java中如何判断web工程中图片的绝对路径是不是存在

在java web项目中,如何获取项目的绝对路径(考虑到后期移植不能写死),大神帮忙!

java如何获取文件的相对路径啊?