FileOutputStream st = null;
for(file_path:file_list)
{
st = new FileOutputStream(file_path);
.
.
.
}
st.close();
我想知道的是 如果我没有关闭一个流并使用新实例对其进行初始化,是否会影响程序性能?
如果是这样,是不是因为最后一行的 close() 只关闭最后创建的流,而其他以前的流正在等待 GC 自己清除?
提前感谢您的阅读。
FileOutputStream st = null;
for(file_path:file_list)
{
st = new FileOutputStream(file_path);
.
.
.
}
st.close();
我想知道的是 如果我没有关闭一个流并使用新实例对其进行初始化,是否会影响程序性能?
如果是这样,是不是因为最后一行的 close() 只关闭最后创建的流,而其他以前的流正在等待 GC 自己清除?
提前感谢您的阅读。
您正在遍历文件路径列表。您绝对应该为每个文件路径创建一个新的 FileOutputStream
。您还应该关闭每个 OutputStream
。我强烈建议您使用 try-with-Resources
而不是手动关闭(并用 BufferedOutputStream
包裹您的流)。喜欢,
for (String file_path : file_list) // I assume it's String(s)
{
// Limit the stream visibility and program to OutputStream interface
try (OutputStream st = new BufferedOutputStream(new FileOutputStream(file_path))) {
// ...
}
}