Java IO OutputStream解析

举报
张俭 发表于 2023/12/29 11:47:19 2023/12/29
【摘要】 Java.io.OutputStream类声明了三个基本方法用来把byte数据写入到流中。当然也有用于关闭和刷新的流public abstract void write(int b) throws IOExceptionpublic void write(byte[] data) throws IOExceptionpublic void write(byte[] data, int off...

Java.io.OutputStream类声明了三个基本方法用来把byte数据写入到流中。当然也有用于关闭和刷新的流

public abstract void write(int b) throws IOException
public void write(byte[] data) throws IOException
public void write(byte[] data, int offset, int length) throws IOException
public void flush() throws IOException
public void close() throws IOException

OutputStreams是一个抽象类,子类提供方法的实现。大多数情况下,你只需要知道你处理的对象是一个OutputStream就足够了。
OutputStream中最基本的方法是write()

public abstract void write(int b) throws IOException
这个方法书写了一个无符号byte(0-255),如果你传入了大于255或者小于0的数值,会对256取模直到得到一个合适的值。
通常来说,对大量的数据,用byte来传递会更快一些。这正是两个write方法的用途
第一个写入整个byte数组。第二个只写入数组的一部分,从offset开始写入length长度的数据。
相反地,如果你尝试一次性写入太多的数据,性能上就会出现问题。文件最好一次一次地写入小的块,典型地数值像512,1024,2048.网络连接通常只需要更小的块,128或者256.
输出流缓冲区用来提高性能。比起把每一个字节送到它想去的终点,字节们先在内存缓冲区中集合。当缓冲区被填满,数据被传送出去。flush方法强迫缓冲区没有满的时候输出。
如果你只使用流很短的时间,你不需要明确地调用flush方法。它应该在流关闭的时候被flush。一旦你关闭了流,你就不能再向其中写入数据,如果你尝试这么做,就会引起IOException.

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。