Java/groovy-配置文件分隔符

Java/groovy-配置文件分隔符,java,groovy,Java,Groovy,我想强制路径分隔符为正斜杠(/),无论它在哪个操作系统上运行;我想使用path.get(s1,s2)而不是String.join(“/”,s1,s2) 我正在开发一个平台无关的应用程序(Windows和Linux),需要在其中生成路径。应用程序可能会处理来自其当前运行的不同操作系统的路径(它可以连接到运行不同操作系统的不同存储)。因此,无论它在哪个操作系统上运行,我可能会将这些作为输入(需要产生这些输出): 它适用于: Paths.get("/tmp", "foo.jpg"); // Lin

我想强制路径分隔符为正斜杠(/),无论它在哪个操作系统上运行;我想使用
path.get(s1,s2)
而不是
String.join(“/”,s1,s2)

我正在开发一个平台无关的应用程序(Windows和Linux),需要在其中生成路径。应用程序可能会处理来自其当前运行的不同操作系统的路径(它可以连接到运行不同操作系统的不同存储)。因此,无论它在哪个操作系统上运行,我可能会将这些作为输入(需要产生这些输出):

它适用于:

Paths.get("/tmp",   "foo.jpg"); // Linux -> "/tmp/foo.jpg"
Paths.get("C:/tmp", "foo.jpg"); // Win   -> "C:/tmp/foo.jpg"
但是不是,因为:

Paths.get("C:\tmp", "foo.jpg"); // XXX Expected: Win -> "C:/tmp/foo.jpg"
Windows路径使用正斜杠,即使默认情况下使用反斜杠。它决定(不是由我决定)在系统中,前向斜杠将始终用作目录分隔符


有没有一种方法可以做到这一点?目前,它是用
String.join()
完成的,但我认为这是有问题的。

我以前也考虑过这个问题。我使用了.replace()方法来修复它。 只要它依赖于操作系统,你就不能概括出一个解决方案


继续使用黑客技术:p

我无法测试,但要么你的第三个示例已经在做你想做的事情,而我不明白这个问题,或者您做了一些复制粘贴错误,而您的注释是错误的?在第三个示例中,输入路径中的反斜杠分隔符被转换为输出路径中的斜杠分隔符。因此,这是您想要的行为,但它现在不起作用?如果使用path.get(),则不起作用。它的行为因运行它的主机操作系统而异。例如,即使您在Linux主机上运行它,也无法对它说“将其视为Windows路径”。并且不能说“在Windows上使用“/”pa路径分隔符”。使用String.join()也有自己的问题:您需要特别注意前面/后面的斜杠,验证路径字符。。。例如,在Linux上,反斜杠是要在文件/目录名中使用的有效字符。在Windows上不是。我可以自己写所有的逻辑,但这就是重点。这种逻辑应该由语言/库提供。有些东西应该作为配置选项公开。我今天看得越多,就越发现今天的语言不支持这个。