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

标签 java windows string macos

我正在运行一些查看文件路径并搜索路径中最后一个斜线的索引的 Java 代码。我遇到的问题是,如果用户在 Mac OSX 和 Windows 中,根据使用的不同斜线,代码的行为会有所不同。例如:

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

是否有某种稳健但简单的方法可以检查 Java 代码中哪一行是合适的?我想我可以检查一个,看看它是否返回 -1,然后使用另一个(如果也是,则路径有问题)但在这一点上,我超出了解决方法,只是对如何最好地处理感到好奇这类问题是因为我认为这是很常见的事情。提前致谢!

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

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);

关于java - 如果在 Mac OSX 与 Windows 中执行特定的 java 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26643937/

相关文章:

windows - 有没有办法将文件夹名称链接到特定单元格?

Java 非法监视器状态异常

java - 如何在 Netbeans 之外运行我的 Java+Glassfish+JavaDB Web 应用程序

java - 自定义 Java 类与映射的速度

python - Windows XP 中的 django startproject 异常

windows - 在 server core 2019ltsc 容器镜像中添加字体

c++ - 使用输出流创建的二进制输出文件的内容

sql - 字符串比较的意外结果

java - 如何从 JTable txt 文件创建字符串?

java - 如何捕获hibernate延迟加载?