哪位大牛能给我通俗的解释下java中的流啊,看了很多资料,还是不理解啊?
1,为什么一定要搞出个流呢,程序不能直接向比如文件中读或写文件吗,为什么一定搞出个流出来呢?能把流理解成是一个缓冲区吗,平衡内存和外存的速度差异,因为内存快,外存慢?2、...
1,为什么一定要搞出个流呢,程序不能直接向比如文件中读或写文件吗,为什么一定搞出个流出来呢?能把流理解成是一个缓冲区吗,平衡内存和外存的速度差异,因为内存快,外存慢?
2、为什么又要分出那么多种流呢,比如弄个输入流,输出流,怎么又弄出个缓冲流,输入流,输出流不也是为了缓冲吗,否则干嘛要用流呢?其他的什么文件流,转换流,对象流,我更是一头雾水。
刚开始学java,希望能通俗的概念的解释下,我是菜鸟。 展开
2、为什么又要分出那么多种流呢,比如弄个输入流,输出流,怎么又弄出个缓冲流,输入流,输出流不也是为了缓冲吗,否则干嘛要用流呢?其他的什么文件流,转换流,对象流,我更是一头雾水。
刚开始学java,希望能通俗的概念的解释下,我是菜鸟。 展开
4个回答
展开全部
为什么要用流,我不解释了,网上多的很。
你把流理解成管道就容易多了。
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了,但是看包装就简单多了,就一层套一层,一层套一层,大的套小的,
大的套小的
你把流理解成管道就容易多了。
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了,但是看包装就简单多了,就一层套一层,一层套一层,大的套小的,
大的套小的
展开全部
计算机是以二进制存储文件的,就是0,1。流分字符流和字节流两种,字节流就是以byte为单位的,你可以把一张图片转换为字节数组,你也可以把一个文本文件转换为字节数组等。而字符流(InputStream,OutputStream)是以字符为单位,你要操作一些文本信息还是很方便的(Reader,Wirter)。没有那么乱,慢慢学别着急。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接读写,不够方便。流并不是缓冲区,有的流就不缓冲。标准错误就不应缓冲。流多,我也烦,但你用不到不代表别人用不到。多种流的串接组合,形成丰富的功能。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
个人认为,你不要着急,因为你才刚开始学,坚持学下去,慢慢你就明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询