如何强制Java在Windows上使用Unix文件分隔符?

如何强制Java在Windows上使用Unix文件分隔符?,java,Java,我有一个简单的代码 String staticDir = f.getCanonicalPath() + "/src/main/webapp/static/"; 在Windows上,它将为我返回“C:\Temp/src/main/webapp/static/” 如何强制Java使用“/”而不是“\” 我试过了 System.setProperty("file.separator", "/"); String staticDir = f.getCanonicalPath() + "/src/mai

我有一个简单的代码

String staticDir = f.getCanonicalPath() + "/src/main/webapp/static/";
在Windows上,它将为我返回“C:\Temp/src/main/webapp/static/”

如何强制Java使用“/”而不是“\”

我试过了

System.setProperty("file.separator", "/");
String staticDir = f.getCanonicalPath() + "/src/main/webapp/static/";
但这并没有解决我的问题


谢谢大家!

只需使用预期的路径分隔符替换路径分隔符即可:

String dir = f.getCanonicalPath().replace(System.getProperty("file.separator"), "/")
             + "/src/main/webapp/static/";
如果可以的话,支持Java7+的
Java.nio.file.Path
。在这里,路径分隔符的概念将消失,直到您调用
toString()
。但是很少有库使用这个,并且仍然使用
文件
,甚至更糟糕的是,
字符串


如果您正在使用的库仍然使用字符串,则可能意味着它们正在
/
上手动拆分。也许是时候告诉他们升级了?

在我的例子中,我使用的是库中的一个bug-


这就是为什么所有建议的解决方案都不能解决我的问题。

听起来像是XY问题。为什么这对你们来说是个问题?它会破坏什么吗?是的,我有另一个库,它会处理这条路径。该函数只接受“/”分隔符。我认为您应该尝试获取
file:///c:/
URI。您实际上是在尝试创建URI吗?因为如果是,将文件分隔符更改为
/
不是正确的方法。这是YUICompressor()-它很长一段时间都没有更新…该错误从2013年起没有修复)