如何使用NIO将InputStream写入文件?

如何使用NIO将InputStream写入文件?,第1张

如何使用NIO将InputStream写入文件?

不,这是不正确的。您冒着丢失数据的风险。规范的NIO复制循环如下:

while (in.read(buffer) >= 0 || buffer.position() > 0){  buffer.flip();  out.write(buffer);  buffer.compact();}

请注意已更改的循环条件,该条件需要在EOS处刷新输出,而使用

compact()
代替条件
clear(),
则可以避免发生短写入的情况。

类似地,规范

transferTo()/transferFrom()
循环如下:

long offset = 0;long quantum = 1024*1024; // or however much you want to transfer at a timelong count;while ((count = out.transferFrom(in, offset, quantum)) > 0){    offset += count;}

它必须在循环中调用,因为不能保证传递整个量子。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5040642.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存