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

2022-09-01 20:00:03

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

我正在使用以下说明:

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

但在Windows上,它给出了:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^

我可以避免此异常吗?有没有更好的方法来做到这一点?


答案 1

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

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

或者更好的是,使用API来实现以下目的:File

File file = new File(fileName);
String simpleFileName = file.getName();

答案 2

写入文件名时,应使用 。System.getProperty("file.separator")

读取文件名时,可能会将正斜杠或反斜杠作为文件分隔符。

您可能需要尝试以下操作:

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