哪位大牛能给我通俗的解释下java中的流啊,看了很多资料,还是不理解啊?

java io 的设计模式就是一种装饰模式,将基本的io流不断的包装,形成功能更加强大,操作更加方便的io流。当然,用字节流FileInputStream/FileOutputStream 是可以处理所有问题的,但是它读取的数据是字节,当我们处理文本的时候,常常是直接处理一个一个的文字或是一行一行的处理,显然字节就不能满足需求了...
哪位大牛能给我通俗的解释下java中的流啊,看了很多资料,还是不理解啊?
为什么要用流,我不解释了,网上多的很。

你把流理解成管道就容易多了。

java io 的设计模式就是一种装饰模式,将基本的io流不断的包装,形成功能更加强大,操作更加方便的io流。
当然,用字节流FileInputStream/FileOutputStream 是可以处理所有问题的,但是它读取的数据是字节,当我们处理文本的时候,常常是直接处理一个一个的文字或是一行一行的处理,显然字节就不能满足需求了。
也就是说当不能满足实际需求的时候,就要将基本流进行包装,扩展功能,方便操作。

比如 new BufferedInputStream(new FileInputStream(new File("xxxxx")))
可以理解成一个小的管道,套在一个大的管道中,(一个大的管道在继续套更大的管道)
关于IO的操作,其实蛮固定液蛮简单的。要是这个io动了,可以看看nio(new io),里面就是用的通道。

java io是java的核心,不管你以后做web还是cs,必须的。

装饰模式跟你穿衣服是一个道理的,可能穿一件不太好看,拿就搭个外套
一件太冷了,就多穿几件。

还有,在io中,通常是用多态来操作的
如:
Reader in=new BufferedReader( //包装一个字符流

new InputStreamReader( //包装一个转换流 字节-->字符

new (BufferedInputStream( //包装一个缓冲流

new FilterInputStream( //包装一个字节流

new File("xxxx")))))) //包装一个文件

而是用的,通常是Reader的 read(char[] cbuf,int off,int len)
即 in.read(xxxxxx);

当然,这个例子有点BT了,但是看包装就简单多了,就一层套一层,一层套一层,大的套小的,
大的套小的2013-02-18
计算机是以二进制存储文件的,就是0,1。流分字符流和字节流两种,字节流就是以byte为单位的,你可以把一张图片转换为字节数组,你也可以把一个文本文件转换为字节数组等。而字符流(InputStream,OutputStream)是以字符为单位,你要操作一些文本信息还是很方便的(Reader,Wirter)。没有那么乱,慢慢学别着急。2013-02-18
直接读写,不够方便。流并不是缓冲区,有的流就不缓冲。标准错误就不应缓冲。流多,我也烦,但你用不到不代表别人用不到。多种流的串接组合,形成丰富的功能。2013-02-18
个人认为,你不要着急,因为你才刚开始学,坚持学下去,慢慢你就明白了2013-02-18
mengvlog 阅读 10 次 更新于 2025-07-19 06:02:33 我来答关注问题0
檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部