如果在Mac OSX与Windows中执行特定的java行

我正在运行一些查看文件path的java代码,并searchpath中最后一个斜杠的索引。 我遇到的问题是,如果用户是在Mac OSXWindows的基础上使用不同的斜杠代码行为不同。 例如:

dir.getPath().lastIndexOf('\\'); //for windows dir.getPath().lastIndexOf('/'); //for mac 

有没有一个有点健壮,但简单的方法,我可以在Java代码中检查哪一行是合适的? 我想我可以检查一个,看看它是否返回-1,然后使用其他(如果这样做,那么有一个问题的path),但在这一点上,我超越了解决方法,更多只是好奇如何最好地处理这些问题,因为我可以看到这是一个普遍的事情。 提前致谢!

编辑:这是我目前的解决方法:

 int ind = dir.getPath().lastIndexOf('\\') != -1 ? dir.getPath().lastIndexOf('\\') : dir.getPath().lastIndexOf('/'); 

你可以使用System.getProperty("os.name")等等,

 String osName = System.getProperty("os.name"); if (osName.toLowerCase().contains("mac")) { // It's a mac. } else if (osName.toLowerCase().contains("win")) { // It's windows. } else { // Other. Linux, AIX, etc. } 

但你真的应该使用File.separatorChar这是系统相关的默认名称分隔符字符

 int ind = dir.getPath().lastIndexOf(File.separatorChar); 

而不是尝试检测操作系统,只需使用内置常量的路径字符:

 dir.getPath().lastIndexOf(File.separatorChar); 

该属性被自动设置为操作系统特定的分隔符。 请参阅File#separatorChar

如果您需要一个String而不是一个char ,请使用File.separator

如果您只关心路径分隔符,那么Java 文件类有一个机制来检索依赖于系统的路径分隔符。 所以对于你的情况,你可以做: dir.getPath().lastIndexOf(File.separator);

一般来说,你应该尽可能地使用File.separator

 String path = dir.getPath(); int lastIndex = path.lastIndexOf(File.separator); 

但是,这并不总是一种选择,在这种情况下,您可以将分隔符转换为已知值…

 String path = // Some string you've obtained from some where... path = path.replace("/", File.separator).replace("\\", File.separator); 

作为一个indea

建议使用File.separator或System.getProperty(“file.separator”)。 例如:你可以使用dir.getPath().lastIndexOf(File.separatorChar);
或者dir.getPath().lastIndexOf(System.getProperty("file.separator"));
实现平台独立