程序在编译器中工作正常但在jar(Java)中没有

时间:2014-09-15 08:09:06

标签: java eclipse file jar export

我将我的程序导出到一个jar文件中,但是当我运行它时,似乎程序找不到.properties文件。我确定它是在jar文件&它在导出之前工作正常。我读过一些关于使用getClass().getResourceAsStream()而不是FileInputStreamFileOutputStream的内容,但似乎无法理解这会有什么帮助。有任何想法吗?这些是使用该文件的两种方法。

private void UpdateData() throws IOException{
        FileInputStream in = new FileInputStream("config.properties");
        Properties props = new Properties();
        props.load(in);
        in.close();

        FileOutputStream out = new FileOutputStream("config.properties");
        props.setProperty("prop1", prop1TextArea.getText().toString());
        props.setProperty("prop2", prop2TextArea.getText().toString());
        props.setProperty("prop3", prop3TextArea.getText().toString());
        props.store(out, null);
        out.close();

}

    private void setText() throws IOException {

        FileInputStream in = new FileInputStream("config.properties");
        Properties props = new Properties();
        props.load(in);
        in.close();

        FileOutputStream out = new FileOutputStream("config.properties");
        prop1TextArea.setText(props.getProperty("prop1"));
        prop2TextArea.setText(props.getProperty("prop2"));
        prop3TextArea.setText(props.getProperty("prop3"));
        out.close();
    }

1 个答案:

答案 0 :(得分:3)

要访问.jar文件中的资源,您必须以资源而非文件的形式访问它们。

.properties不在文件系统中,因此您无法通过FileInputStream访问它们。

如果您想在之后保存它们,则必须在程序的第一次启动时创建新的.properties。因此,您必须首先检查文件是否存在(例如,通过File.exists()),并且在没有文件属性的情况下工作或创建新文件然后使用它。