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 - 如何从绝对路径中获取文件名并删除其文件扩展名?的主要内容,如果未能解决你的问题,请参考以下文章