我有一个用java编写的应用程序,其中正斜杠指定文件和目录路径。当应用程序在linux上运行时,文件和目录可以访问。但是当它在Windows上运行时,它表示指定路径不正确的错误。如何唯一地指定文件的路径。
在使用此命令的java iam中:
public static final String WD ="/qark-master/qark/qarkMain.py";
public static final String MANIFESTPATH="/apktool/AndroidManifest.xml";
请在这里帮助我!
答案 0 :(得分:3)
如Jim Garrison所述,正斜杠适用于Windows和Unix。
问题在于驱动器号或根目录。在从/qark-master
之类的根目录定义的Windows路径中,它是当前驱动器的根目录。
但是......在带有驱动器号的Windows中或在Linux中从root用户代码中使用绝对路径并不是一个好主意。更好的方法是使用当前运行目录或特殊环境变量的相对路径。
然后你可以使用正斜杠而不关心路径分隔符。
从其他人那里 - 在JVM中有一个名为“file.separator”的System属性,可以根据操作系统用它构建一个路径。当然,无论如何,对于带有驱动器号的Windows的绝对路径存在问题。
答案 1 :(得分:0)
您需要转义转义序列的字符。更多细节 - Escape Characters
在Windows中,您需要为带有反斜杠的文件分隔符定义转义字符 - 如下所示。
String filePath = "C:\\Users\\b21677\\DFS.docx";
在Linux中,您应该按原样定义
public static final String WD ="/qark-master/qark/qarkMain.py";
答案 2 :(得分:0)
虽然Java很乐意在Windows和Linux中使用正斜杠,但Windows中对驱动器号前缀的要求使得在两个系统中都无法使用相同的绝对路径。
您需要做的是使用属性文件来配置与操作系统相关的参数,例如文件位置,并在每个系统上使用不同版本的属性文件。
请注意,在Java代码中硬编码外部资源引用(即文件路径)是非常糟糕的做法。相对引用是可以的,但它们必须相对于在运行时提供的某些基本位置,而不是编译到可执行文件中。
答案 3 :(得分: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";