Apache commons-io库几乎是java中IO操作的事实上的方式。真正困扰我的是它没有提供在io操作后自动流关闭的方法。
所需的工作流程:
IOUtils.write(myBytes, new FileOutputStream("/path/to/file.txt"));
当前工作流程:
FileOutputStream fos = new FileOutputStream("/path/to/file.txt")
IOUtils.write(myBytes, fos);
fos.close();
我可以在一行中完成吗?我有什么替代品?如果什么都没有,为什么?
答案 0 :(得分:0)
有几个原因:
其他一些工作流程仍然引用该流,并且可能希望在不久的将来写入该流。 IOUtils
无法知道此信息。以这种方式关闭流可能会很快产生不良行为。
IO操作应该是原子的。 write()
写入流,close()
将其关闭。 没有理由同时执行这两项操作,特别是如果方法的名称明确说明write()
,而不是writeAndClose()
。
编写自己的writeAndClose()
函数。
public static void writeAndClose(String path, Byte[] bytes)
{
FileOutputStream fos = new FileOutputStream(path)
IOUtils.write(bytes, fos);
fos.close();
}