Java 在Windows/Linux/OSX上提取完整文件名

Java 在Windows/Linux/OSX上提取完整文件名,java,regex,Java,Regex,我正在尝试修改以下代码: String[] sarr = (new String("a\\b\\c\\d.jar")).split("[(/)|(\\)]"); System.out.println(sarr[sarr.length-1]); 因此,新字符串可以是任何系统上jar文件的任何路径。使用perl正则表达式,我可以很容易地做到这一点,但是使用Java正则表达式,我没有得到想要的结果。我怎样才能做到这一点?我要去拿d.jar 我看到了许多不同的帖子,但它们都是具体的,不是一般性的,

我正在尝试修改以下代码:

 String[] sarr = (new String("a\\b\\c\\d.jar")).split("[(/)|(\\)]");
 System.out.println(sarr[sarr.length-1]);

因此,新字符串可以是任何系统上jar文件的任何路径。使用perl正则表达式,我可以很容易地做到这一点,但是使用Java正则表达式,我没有得到想要的结果。我怎样才能做到这一点?我要去拿d.jar

我看到了许多不同的帖子,但它们都是具体的,不是一般性的,也不是我所需要的


谢谢。

Java字符串文字
“[(/)|(\\)]”
表示正则表达式
[(/)|(\)]
,这是一个字符类,它将匹配任何单个
/
字符。相反,您可能希望正则表达式
[/\\]
(匹配单个正斜杠或反斜杠),这反过来意味着
“[/\\\\]”
作为Java字符串文本

str.split("[/\\\\]");
或者,如果您知道您将始终处理您当时运行的系统固有的路径(即在Windows上运行时为
C:\Users\something
,在Linux/Mac/等上运行时为
/home/user
),则可以使用
java.io.File
类:

File f = new File(fullPath);
String name = f.getName();
getName()
只返回姓氏组件,还有
getPath()
返回存储在
文件中的完整路径字符串(可能是相对路径)和
getAbsolutePath()
返回绝对路径(与
getPath()相同)
如果它已经是绝对的,或者
getPath()
如果它是相对的,则以当前工作目录作为前缀)


但是,如果您可能在类Unix系统上处理Windows路径,或者在类Unix系统上处理Windows路径,那么您必须坚持自己的字符串操作。

不要使用正则表达式或任何其他字符串解析机制,而要使用
java.io.File
。它提供了许多方法,要获取文件名,请使用
file.getName()

输出:

d、 罐子


为什么不直接使用
File.getAbsolutePath()
?我正在修改两年前编写的代码,所以我不记得为什么:)。顺便说一句,我不是连环杀手,但我知道我住在哪里;)。现在就检查。“我没有得到想要的结果”-你得到了什么结果?不,这不是我需要的。它给我C:\Users\vitali\Documents\NetBeansProjects\Test\a\b\C\d.jar,我需要d。jar@VitaliPom,然后使用
File.getName()
String file_name = new File("a\\b\\c\\d.jar").getName();
System.out.println(file_name);