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

1,为什么一定要搞出个流呢,程序不能直接向比如文件中读或写文件吗,为什么一定搞出个流出来呢?能把流理解成是一个缓冲区吗,平衡内存和外存的速度差异,因为内存快,外存慢?2、... 1,为什么一定要搞出个流呢,程序不能直接向比如文件中读或写文件吗,为什么一定搞出个流出来呢?能把流理解成是一个缓冲区吗,平衡内存和外存的速度差异,因为内存快,外存慢?
2、为什么又要分出那么多种流呢,比如弄个输入流,输出流,怎么又弄出个缓冲流,输入流,输出流不也是为了缓冲吗,否则干嘛要用流呢?其他的什么文件流,转换流,对象流,我更是一头雾水。
刚开始学java,希望能通俗的概念的解释下,我是菜鸟。
展开
 我来答
悉心且深远灬萨摩A
2013-02-18 · TA获得超过636个赞
知道小有建树答主
回答量:294
采纳率:0%
帮助的人:310万
展开全部
为什么要用流,我不解释了,网上多的很。

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

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了,但是看包装就简单多了,就一层套一层,一层套一层,大的套小的,
大的套小的
w21fanfan
2013-02-18 · 超过30用户采纳过TA的回答
知道答主
回答量:210
采纳率:29%
帮助的人:38.8万
展开全部
计算机是以二进制存储文件的,就是0,1。流分字符流和字节流两种,字节流就是以byte为单位的,你可以把一张图片转换为字节数组,你也可以把一个文本文件转换为字节数组等。而字符流(InputStream,OutputStream)是以字符为单位,你要操作一些文本信息还是很方便的(Reader,Wirter)。没有那么乱,慢慢学别着急。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1b13c83eb
2013-02-18 · TA获得超过466个赞
知道小有建树答主
回答量:279
采纳率:0%
帮助的人:129万
展开全部
直接读写,不够方便。流并不是缓冲区,有的流就不缓冲。标准错误就不应缓冲。流多,我也烦,但你用不到不代表别人用不到。多种流的串接组合,形成丰富的功能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
知无不言言必尽
2013-02-18 · 超过26用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:70.5万
展开全部
个人认为,你不要着急,因为你才刚开始学,坚持学下去,慢慢你就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式