我正在尝试读取位于jar文件中的属性文件。我想使用File.separator,因为应用程序将在多个平台上运行。我正在构建如下路径:
jarFilePath="jar:file:"+jarFile.getAbsolutePath()+"!"+jarPropertyFilePath; //jarPropertyFilePath is getting loaded from a class which is storing Constant JAR_PROPERTY_FILE_PATH.
fileURL= new URL(jarFilePath);
但是,上面只有当jarPropertyFilePath(jar中属性文件的固定位置)给出时才能起作用:
案例1:
public static final String JAR_PROPERTY_FILE_PATH = "/manifest/patchControl.properties";
案例2:
如果我按如下方式使用File.separator,它会给出java.net.MalformedURLException:no!/ in spec
public static final String JAR_PROPERTY_FILE_PATH = File.separator+"manifest"+File.separator+"patchControl.properties";
在案例1中(工作正常),调试时的最终URL如下:
jar:file:C:\MyWorkspace\FalconPatchInstaller\.\patches\DS661JDK1.8.jar!/manifest/patchControl.properties
在案例2中(不工作),调试时的最终URL如下:
jar:file:C:\MyWorkspace\FalconPatchInstaller\.\patches\DS661JDK1.8.jar!\manifest\patchControl.properties
如何将File.separator用于JAR_PROPERTY_FILE_PATH?
答案 0 :(得分:5)
我正在尝试读取位于jar文件中的属性文件。我想使用File.separator,因为应用程序将在多个平台上运行
不,您根本不想使用File.separator
。 JAR文件中定义的路径分隔符为/
。它不依赖于平台。
注意您可以在Java中的所有平台上的文件名中使用/
。但这不是文件名,它是资源名称,它命名的东西不是文件,而是资源。