我有一个生成ByteArrayOutputStream
的方法,我想使用FileChannel
将这些内容放入文件中。使用FileOutputStream
,我可以这样做:
ByteArrayOutputStream baos = MyClass.myMethod(); // get my stream
FileOutputStream out = new FileOutputStream("somefile"); // I want to write to "somefile"
out.writeTo(baos); // write
如何使用
FileChannel
实现此功能?我知道可以将baos
转换为字节数组,然后将其转换为ByteBuffer
,最后使用FileChannel.write()
写入数据。但这意味着需要将流的内容倒入内存中,而且它相当大。除非我错了,否则将
ByteArrayOutputStream
转换为某种类型的InputStream
,然后使用Channels.newChannel(InputStream in)
,最后使用FileChannel.transferFrom()
将遇到同样的问题。