我需要从文件的绝对路径获取文件名(我知道该file.getName()方法,但我不能在这里使用它).
编辑:我不能使用file.getName()因为我不需要文件名; 我也需要文件路径的一部分(但同样,不是整个absoulte路径).在提供某个路径之后,我需要文件路径的一部分.
假设该文件位于文件夹中:
C:\Users\someUser
Run Code Online (Sandbox Code Playgroud)
在Windows机器上,如果我创建一个模式字符串如下:
String patternStr = "C:\\Users\\someUser\\(.*+)";
Run Code Online (Sandbox Code Playgroud)
我得到一个例外: java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence反斜杠.
如果我使用Pattern.quote(File.pathSeparator):
String patternStr = "C:" + Pattern.quote(File.separator) + "Users" + Pattern.quote(File.separator) + "someUser" + Pattern.quote(File.separator) + "(.*+)";
Run Code Online (Sandbox Code Playgroud)
生成的模式字符串是:C:\Q;\EUsers\Q;\EsomeUser\Q;\E(.*+)当然与实际fileName"C:\ Users\someUser\myFile.txt"不匹配.
我在这里错过了什么?解析文件名的正确方法是什么?
解析文件名的正确方法是什么?
解析文件名的正确方法是使用File(String).使用正则表达式可以将平台依赖项硬连接到代码中.这是个坏主意.
我知道你说你不能使用File.getName()......但这是正确的解决方案.如果你愿意说为什么你不能使用File.getName()或许我可以建议一个替代解决方案.