如何使用斜杠分隔符在Windows和Linux中指定访问文件的路径

5

我有一个用 Java 写的应用程序,其中使用正斜杠来指定文件和目录路径。当应用程序在 Linux 上运行时,可以访问文件和目录。但是当它在 Windows 上运行时,会出现指定路径不正确的错误。如何唯一地指定文件的路径。

在 Java 中,我正在使用以下命令:

public static final String WD ="/qark-master/qark/qarkMain.py";
public static final String MANIFESTPATH="/apktool/AndroidManifest.xml";

请在这里帮助我!

4个回答

4
正如Jim Garrison所提到的那样,正斜杠在Windows和Unix中都可以使用。问题在于驱动器字母或根目录。当在Windows中从根目录定义路径时,比如/qark-master,它是当前驱动器的根目录。但是,在代码中使用绝对路径,无论是在带有驱动器字母的Windows中还是在Linux中的根目录中,都不是一个好主意。更好的方法是使用相对路径,即从当前运行目录或特殊环境变量开始。然后你可以使用正斜杠而不用担心路径分隔符。
另一方面,JVM中有一个名为"file.separator"的系统属性,可以根据操作系统构建路径。当然,在Windows上使用带有驱动器字母的绝对路径仍然会存在问题。

是的,没错。我正在将当前工作目录附加到/qark-master/qark/qarkMain.py中,在Windows系统中,工作目录将使用反斜杠表示。qarkMain.py文件存在于应用程序目录中而不是系统目录。因此,为了独立访问qarkMain.py,需要如何指定路径? - Maria
是的,当我使用“file.separator”时,它可以正常工作。谢谢。 - Maria

1

虽然Java在Windows和Linux中都可以使用正斜杠,但是在Windows中需要驱动器字母前缀的要求使得在两个系统中使用相同的绝对路径变得不可能。

您需要使用属性文件来配置与操作系统相关的参数,例如文件位置,并在每个系统上拥有一个不同版本的属性文件。

请注意,在Java代码中硬编码外部资源引用(即文件路径)是非常糟糕的实践。相对参考是可以的,但它们必须相对于在运行时提供而不是编译到可执行文件中的某个基本位置。


0

在编程中,你需要转义字符以便使用转义序列。更多细节请参考 转义字符

在Windows系统中,你需要使用反斜杠来定义文件分隔符的转义字符 - 如下所示。

    String filePath = "C:\\Users\\b21677\\DFS.docx";
在Linux中,你应该按原样定义。
     public static final String WD ="/qark-master/qark/qarkMain.py";

0

当我使用file.separator时,这个工作得很好。

public static final String QWD = File.separator +"qark-master" + File.separator +"qark" + File.separator +"qarkMain.py";
public static final String MANIFESTPATH=File.separator +"apktool"+ File.separator +"AndroidManifest.xml";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接