2013-05-25 164 views
0

我写了一个java应用程序,它读取一个文件(files/olten)并在这个文件中显示信息。 (在JTable中)。 我现在有更新文件中的信息的问题,以便操作不会丢失,并且在下一次打开程序时仍然存在。在jar里创建/更新文件

我已经尝试了很多事情来指定文件的路径,但没有任何工作。这里是什么,我尝试了一些样本:

out = new PrintWriter(new File("").getAbsolutePath() + "/files/olten"); 
out = new PrintWriter(this.getClass().getClassLoader().getResource("files/olten").toString()); 
out = new PrintWriter("olten"); 

正确的路径(从java文件的路径来看)“文件/奥尔滕”。 我该如何实现修改这个文件?

在此先感谢!

+1

与[this]类似(http://stackoverflow.com/questions/5052311/how-can-a-java-program-use-files-inside-the-jar-for-read-and-write)和[本](http://stackoverflow.com/questions/1224817/modifying-a-file-inside-a-jar)。 – Zong

回答

0

你可能想使用FileWriter的看看这个例子:

try { 
    PrintWriter writer = new PrintWriter(new FileWriter("files/olten/TextFile.txt",true)); 
    writer.println("Some text"); 
    writer.flush(); 
    writer.close(); 
    System.out.println("Writed"); 
    } catch (IOException ex) { 
     //write your own message 
    } 

注意
参数true表示该数据将被写入文件,而不是开始的结束。

+0

除非'FileWriter'这样做,否则这不会解决他的主要问题,即修改jar中的文件。 – Zong

+0

@宗立:但是我说过他不会使用* FileWriter *他的问题不会解决吗?不,实际上,* PrintWriter *中有另外7个构造函数,可以使用不同的参数。 – Azad

+0

你的措辞有点令人困惑,但它在逻辑上等同于“我没有说如果他使用FileWriter,他的问题就会解决”。那么,提出切合的建议并不足以作为答案。它没有解决他真正的问题。 – Zong

0

向资源文件写入部分可分发jar文件可能不是正确的做法。 你可能想尝试这样的事情,但结果可能会有所不同,这取决于你可能想如何使用你的jar。

URL url = getClass().getResource(relative_path); 
File file = new File(url.toURI()); 
OutputStream output = new FileOutputStream(file); 

还不推荐!!

+0

你有任何证据证明这是有效的吗?我觉得它不太可能。 – Zong