反复向文件写入数据
Writing data to file repeatedly
我不得不反复读取文件和写入数据。我想到了两种方法:-
方法一
while(readLine ...) {
// open the file to write
br.write("something); //write to file
br.close();
// close the file
}
方法二
// open the file to write
while(readLine...)
br.write("something");
}
br.close();
我应该每次都打开和关闭文件,还是在程序开头打开一次,然后在应用所有业务逻辑后最后关闭文件。哪一个是更好的方法?有人有缺点吗?
使用方法 #2。
每次写入的打开和关闭都不必要地慢。此外,如果您不小心以 附加模式 打开文件,您最终会不断覆盖旧文件并以仅包含您编写的最后一行的输出文件结束。
所以,使用方法#2:打开文件(可能是追加模式,也可能不是,取决于你的需要),写下你要写的所有内容,关闭文件,完成。
您应该打开文件的输入或输出流一次并完成所有业务逻辑,然后在最后关闭连接。
编写此类代码的更好方法是:
try{
// open the file stream
// perform your logic
}
catch(IOException ex){
// exception handling
}
finally{
// close the stream here in finally block
}
您可以在不需要编写 finally 块的资源中使用 try。在 try 块中打开的流将自动关闭。
try(BufferedReader br = new BuffredReader(...)/*add writer here as well*/){
// perform your logic here
}
catch(IOException ex){
// exception handling
}
我不得不反复读取文件和写入数据。我想到了两种方法:-
方法一
while(readLine ...) {
// open the file to write
br.write("something); //write to file
br.close();
// close the file
}
方法二
// open the file to write
while(readLine...)
br.write("something");
}
br.close();
我应该每次都打开和关闭文件,还是在程序开头打开一次,然后在应用所有业务逻辑后最后关闭文件。哪一个是更好的方法?有人有缺点吗?
使用方法 #2。
每次写入的打开和关闭都不必要地慢。此外,如果您不小心以 附加模式 打开文件,您最终会不断覆盖旧文件并以仅包含您编写的最后一行的输出文件结束。
所以,使用方法#2:打开文件(可能是追加模式,也可能不是,取决于你的需要),写下你要写的所有内容,关闭文件,完成。
您应该打开文件的输入或输出流一次并完成所有业务逻辑,然后在最后关闭连接。 编写此类代码的更好方法是:
try{
// open the file stream
// perform your logic
}
catch(IOException ex){
// exception handling
}
finally{
// close the stream here in finally block
}
您可以在不需要编写 finally 块的资源中使用 try。在 try 块中打开的流将自动关闭。
try(BufferedReader br = new BuffredReader(...)/*add writer here as well*/){
// perform your logic here
}
catch(IOException ex){
// exception handling
}