是否可以在java附加数据中打开文件并关闭多次。例如:
//---- psuedocode
//class variable declaration
FileWriter writer1 = new FileWriter(filename);
fn1:
writer.append(data - title);
fn2:
while(incomingdata == true){
writer.append(data)
writer.flush();
writer.close()
}
问题在于while循环。该文件已关闭,无法再次打开。任何人都可以帮助我吗?
答案 0 :(得分:2)
建议每次关闭和重新打开文件的答案都是正确的。
但是,如果您必须这样做(并且我不清楚您这样做),那么您每次都可以创建一个新的FileWriter。在构造FileWriter时将true作为第二个参数传递,以获取一个附加到文件而不是替换它的文件。喜欢
FileWriter writer1 = new FileWriter(filename, true);
答案 1 :(得分:1)
文件关闭后,您需要重新打开它。调用writer.flush()
应该刷新流。基本上,您将从writer.close()
循环中删除while
。这将允许您在完成文件后关闭文件。
因此,您有两个选项,可以从writer.close()
循环中删除while
,也可以在循环开头创建一个新的FileWriter
实例。
答案 2 :(得分:1)
关闭流后,进一步的write()或flush()调用将导致抛出IOException。但是,关闭先前关闭的流无效。
while(incomingdata == true){
writer.write(data)
}
writer.close()
您不需要每次冲洗。因为调用close()
将在关闭流之前首先刷新数据。
已更新
我创建的文件必须保存。我应该这样做 关闭它以便更新时间戳。这是同步文件的时候 住。
像这样使用
while(incomingdata == true){
writer.append(data);
writer.flush();
}
writer.close();
答案 3 :(得分:0)
我建议您不要尝试关闭文件,然后重新打开它。打开文件是一项昂贵的操作,执行此操作的次数越少,代码运行速度就越快。
打开一次,并在写完文件后关闭文件。这将超出你的循环。