希望这是一个关于java中BufferedOutputStreams和DataOutputStreams的快速简单的问题。
当我将字节写入输出流时,如
myBufferedOutputStream.write(array);
myDataOutputStream.write(array);
这些方法是立即将它们写入流并返回还是阻止它们?
我没有在核心java文档中看到任何内容,但也许我的问题没有意义,因为写入永远不会阻止?
有人请我直截了当。
谢谢, JBU
答案 0 :(得分:2)
答案 1 :(得分:1)
java.io.*
中的所有读写方法都有可能阻止。无支持异步I / O.对于阅读,必须使用.available()或类似机制手动实现。对于写作,嗯,你是独立的。
答案 2 :(得分:1)
java.io. *包中的API可能会被阻止。但是,有一个特殊的API,称为Java NIO(新I / O或非阻塞I / O),您应该将其用于异步I / O.
查看包java.nio。* 您可以在此处找到一些示例:http://en.wikipedia.org/wiki/New_I/O
答案 3 :(得分:0)
我认为这取决于实施。如果您使用BufferedOutputStream
之类的内容,则对write()
的调用可能不会“阻止”,因为该类会为性能提供缓冲。
但是,如果使用FileOutputStream
,写入调用可能会阻塞,具体取决于系统上I / O资源的繁忙/可用,因为对write()
的调用实际上可能会触发I / O当时的操作,需要时间才能完成。