今天在做上传文件的时候,想用简单的办法得到文件名,于是就直接用

  1. String[] fileName = filePath.split("\\"); 
  2. System.out.println(fileName[fileName.length-1]);

这行代码去得文件名,开始觉得没有问题,可是一运行报了下面的错误

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

一看就知道是分割符出现了问题,由于路径是前台传过来的,得到的都是"\"这样的格式,但是当你在类中自己写的时候,如果你写成

  1. String filePath = "c:\aaa\bbb\ccc\a.txt"

这种形式,编译器是要报错的,因为API中已经写的很清楚了

  1. 在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\\'。  

所在写成

  1. String filePath = "c:\\aaa\\bbb\\ccc\\a.txt"

这样才是对的,因此

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

这个问题的解决方式就是将"\\"写成"\\\\"

  1. String[] fileName = filePath.split("\\\\"); 
  2. System.out.println(fileName[fileName.length-1]); 

这样问题就解决了。问题虽小,但是值得注意!