我正在编写一个对应用程序非常重要的文件(客户端和供应商特定)。我想知道在写文件时我应该考虑什么。请参阅下面的演示文件编写过程
public class EDIWriter {
public final static String END_OF_ATTRIBUTE = "|";
File file;
BufferedWriter writer;
public void writer(){
try{
file = new File("C://edifile.edi");
writer = new BufferedWriter(new FileWriter(file));
StringBuilder editext = new StringBuilder();
editext.append("ISA");
editext.append(END_OF_ATTRIBUTE);
editext.append("00");
editext.append(END_OF_ATTRIBUTE);
writer.write(editext.toString());
writer.flush();
writer.close();
}catch(IOException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String arg[]){
new EDIWriter().writer();
}
}
答案 0 :(得分:1)
一点是确保关闭文件,即使发生了异常。所以我建议添加一个finally块:
finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException ioexception) {
//log exception
}
我记得的另一点:由于你的方法是公开的,它可以被调用两次(来自不同的调用者)。同步可能有助于解决此问题。
答案 1 :(得分:1)
是的,在处理文件操作时,必须关闭资源(全部打开以进行解析/写入)。否则,最终会出现内存不足问题。
答案 2 :(得分:0)
也许您应该在编辑之前备份原始文件,然后在编辑后检查文件的正确性,如果文件已损坏,请从备份文件中恢复。
只是一个建议。
答案 3 :(得分:0)
最重要的一点是:我的程序是否正常运行?它通过我的测试并满足我的所有要求吗?如果没有,那么当您遇到要解决的特定问题时,请到此处。如果是这样,那么继续下一个任务。
答案 4 :(得分:-2)
首先,文件必须存在。 如果(!file.exists()){ file.createNewFile(); }