使用系统文件分隔符符分割文件名

Вит*_*вич 16 java regex windows file-io

我有一个完整的文件路径,我想获取文件名.

我使用以下说明:

String[] splittedFileName = fileName.split(System.getProperty("file.separator"));
String simpleFileName = splittedFileName[splittedFileName.length-1];
Run Code Online (Sandbox Code Playgroud)

但是在Windows上它给出了:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
Run Code Online (Sandbox Code Playgroud)

我可以避免这种例外吗?有一个更好的方法吗?

Jon*_*eet 40

问题是\必须进行转义才能将其用作正则表达式中的反斜杠.您应该使用使用正则表达式拆分API,或者Pattern.quote先使用:

// Alternative: use Pattern.quote(File.separator)
String pattern = Pattern.quote(System.getProperty("file.separator"));
String[] splittedFileName = fileName.split(pattern);
Run Code Online (Sandbox Code Playgroud)

或者甚至更好,使用FileAPI:

File file = new File(fileName);
String simpleFileName = file.getName();
Run Code Online (Sandbox Code Playgroud)


Gil*_*anc 5

当您编写文件名时,您应该使用System.getProperty("file.separator").

读取文件名时,可能有正斜杠或反斜杠作为文件分隔符.

您可能想尝试以下操作:

fileName = fileName.replace("\\", "/");
String[] splittedFileName = fileName.split("/"));
String simpleFileName = splittedFileName[splittedFileName.length-1];
Run Code Online (Sandbox Code Playgroud)