如何在同一个包中写入文件?

时间:2017-02-22 15:55:47

标签: java file

我有这段代码:

try (OutputStream outputStream = new FileOutputStream(PROPERTIES_FILE_PATH)) {
            properties.setProperty("test", "test");
            properties.store(outputStream, null);
        } 

PROPERTIES_FILE_PATH = "fileName.properties" 这将在项目的根目录中创建一个文件。我发现避免这种情况的唯一方法是放置文件的绝对路径,意思是:

src/main/java/com/comany/fileName.properties

但人们告诉我,这不会在IDE之外工作,在现实生活中......因为在jar文件中没有src/main...这样的东西。 什么是解决方案呢?

3 个答案:

答案 0 :(得分:0)

您通常不会修改内部存储的文件。相反,您应该在JAR中存储默认文件,并将任何修改存储为外部文件。

您可以使用Class.getResourceAsStream()访问JAR文件中的非代码资源。

答案 1 :(得分:0)

你可以这样做,并使用set方法setParameters()来编写它

public class Configuration {
private Properties parameters;
private static Configuration instance = null;

private Configuration() {
    parameters = new Properties();
    try {
        parameters.load(getClass().getClassLoader().getResourceAsStream("fileName.proooooperties"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static Configuration getInstance() {
    return instance == null ? new Configuration() : instance;
}


public static void writeProperties(String fileName) {  
    try{  
        FileOutputStream oFile = new FileOutputStream("fileName.properties", true);
        parameters.setProperty("test", "testing");
        parameters.store(oFile, "comments");
        oFile.close();
    } catch (IOException e) {  
        e.printStackTrace();  
    }  
} 

public String getParameter(String name) {
    return parameters.getProperty(name);
}
public void setParameters(String name, String value) {
    parameters.setProperty(name, value);
}

}

答案 2 :(得分:0)

我最终创建了一个配置文件,我把我的属性文件的路径放在了项目之外。