我应该关闭由 ZipOutputStream 包装的 FileOutputStream
should i close FileOutputStream which is wrapped by ZipOutputStream
我正在写一个批处理过程,下面将在循环中被调用很多次。所以我想知道我是否正确关闭了资源
//这将在循环中调用
FileOutputStream fos = null;
ZipOutputStream zos = null;
try {
fos = new FileOutputStream(zipFile);
zos = new ZipOutputStream(fos);
...
...
closeQuietly(zos)
} catch(Exception e) {log.error(e.getMessage(),e);}
void closeQuietly(ZipOutputStream zos) {
try {
zos.closeEntry();
zos.flush();
zos.close();
}
catch(Exception e) {log.error(e.getMessage(),e);}
}
我是否正确关闭了资源。我是否还需要在 closeQuietly()
中关闭 FileOutputStream
也可以通过尝试资源来达到,比如
try (
fos = new FileOutputStream(zipFile);
zos = new ZipOutputStream(fos)
) {
your code
}
如果您查看 documentation,您会发现 .close()“关闭 ZIP 输出流以及被过滤的流。”
所以你这样做应该没问题
我正在写一个批处理过程,下面将在循环中被调用很多次。所以我想知道我是否正确关闭了资源
//这将在循环中调用
FileOutputStream fos = null;
ZipOutputStream zos = null;
try {
fos = new FileOutputStream(zipFile);
zos = new ZipOutputStream(fos);
...
...
closeQuietly(zos)
} catch(Exception e) {log.error(e.getMessage(),e);}
void closeQuietly(ZipOutputStream zos) {
try {
zos.closeEntry();
zos.flush();
zos.close();
}
catch(Exception e) {log.error(e.getMessage(),e);}
}
我是否正确关闭了资源。我是否还需要在 closeQuietly()
FileOutputStream
也可以通过尝试资源来达到,比如
try (
fos = new FileOutputStream(zipFile);
zos = new ZipOutputStream(fos)
) {
your code
}
如果您查看 documentation,您会发现 .close()“关闭 ZIP 输出流以及被过滤的流。”
所以你这样做应该没问题