Java IO 写时出错,读时不出错

Java IO Error when writing but not when reading

所以问题是我尝试读取打包在 .jar 中的配置文件,它工作正常,但是当涉及到写入文件时,找不到文件,但他们使用的是相同的

getClass().getResource(Path);

它似乎只适用于输入流。

这是我的IO的所有代码class。

package com;

publicclass输入输出{

public boolean CheckStream () {
    String LineRead;

    try {

        InputStream IS = getClass().getResourceAsStream("Config.txt");

        InputStreamReader ISR = new InputStreamReader (IS,Charset.forName("UTf-8"));
        BufferedReader BR = new BufferedReader(ISR);

        if ((LineRead = BR.readLine()) != null) {
            BR.close();
            return true;
        }

        IS.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

    return false;
}

public void Write (String Path, String [] ThingsToWrite) throws FileNotFoundException {
    OutputStream Out = new FileOutputStream (getClass().getResource(Path).getPath());
    PrintStream PS = new PrintStream (Out);

    for (int i = 0; i < ThingsToWrite.length; i ++) {
        PS.print(ThingsToWrite[i]);
    }

    PS.close();
}

}

非常感谢任何帮助。

您不能只写入 jar 文件中的文件 - 它不是常规意义上的文件。

虽然你可以解压整个jar文件,写入新内容,然后重新打包,但最好重新设计,这样你就不会需要更新jar文件。

例如,您可能有一个常规的本地文件,如果它存在则使用它,但如果不存在则回退到从 jar 文件读取。那么你只需要写入到本地文件即可。