Din*_*esh 6 java performance file
File无论何时在JTextArea字段中发生任何内容更改,我都会写信.我决定每次根据更改事件打开和关闭文件内容.
就像是 ,
public void addToLogFile(String changeContent) {
try {
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(currentLogFile,true)));
pw.print(changeContent);
pw.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为可能是在初始阶段打开它并在需要时转储内容,而不是每次打开和关闭文件.最后在结束阶段关闭它.
在计划的初始阶段:
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(currentLogFile,true)));
Run Code Online (Sandbox Code Playgroud)
然后在代码中的某处,无论何时需要,
pw.print(changeContent); // Most frequent usage
Run Code Online (Sandbox Code Playgroud)
在计划的最后阶段:
pw.close();
Run Code Online (Sandbox Code Playgroud)
哪一个会更有效率?在什么条件下,我必须选择一个吗?
肯定更有效的方法是打开文件一次。每次打开文件都非常昂贵。
一种可能有用的情况是,文件的新条目长时间出现一次,因此操作系统不需要保留打开的文件处理程序。
我会考虑每次打开和关闭它的另一种情况是,写操作并不那么频繁,而您想让其他进程将其写入文件。或者,也许当您想确保每个条目在写完之后才可见,但是您应该简单地刷新缓冲区。