在maven项目

时间:2017-08-08 02:32:26

标签: maven javafx

我正在用netbeans IDE和maven编写一个javaFX项目。

我正在保存属性文件中的用户编辑,并在应用程序启动时加载它,并且我想在应用程序关闭时更新它以便下次重用它。

所以我正在阅读下面的属性文件:

public static Properties propConfig = new Properties();

InputStream input;
input = Config.class.getClassLoader().getResourceAsStream("config/displayConfig.properties");
propConfig.load(input);

工作正常..

但我不知道如何更新属性文件:(如

    output =  new FileOutputStream( new File(Config.class.getClassLoader().getResource("config/displayConfig.properties").toURI()) );

因为从jar

读取资源文件而无法正常工作
jar:file:/D:/freelance%20projects/01%20school%20tool%20bar/mavenprojectFX/target/racer40-1.0-SNAPSHOT.jar!/config/displayConfig.properties

2 个答案:

答案 0 :(得分:0)

通常不建议更新JAR中的文件。 请改用本地文件,例如:

Path userDirPath = Paths.get(System.getProperty("user.home"), ".<myAppSymbolicName>", "<myAppVersion>");
Path configDirPath =  userDirPath.resolve("config"); 
Path displayConfigFilePath = configDirPath.resolve("displayConfig.properties");
// read file

答案 1 :(得分:0)

我已经做了一个解决方法,因为我只能从jar读取文件我已经定义了一个新的属性文件,并且我已经在其中定义了配置路径。

我修改了POM.xml中的资源以设置过滤真实

    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

我已将路径属性文件放在&#34; src / main / resources / config&#34;夹

路径文件包含

Path=${project.build.directory}

我正在阅读以下内容

InputStream pathStream
                = Config.class.getClassLoader().getResourceAsStream("config/path.properties");

        Properties pathProperties = new Properties();
        pathProperties.load(pathStream);
        path = pathProperties.get("Path").toString().replace("target", "");
        System.out.println(pathProperties.get("Path"));
        pathStream.close();

然后我正在使用&#39;路径&#39;变量如下

OutputStream  output = new FileOutputStream(new File(path + displayConfig.properties"));

所以我现在把配置文件&#34; displayConfig.properties&#34;在jar的同一条道路上。