首页 > 其他 > 详细

IO流的总结

时间:2016-01-05 08:19:07      阅读:91      评论:0      收藏:0      [点我收藏+]

流是java世界中对外在事物流动规律的一个描述,那么必然和数据相关联。

字符流:Reader Writer

字节流:OutputStream InputStrean

Reader的基本方法

int read():返回一个int型数据。为什么要返回一个int型数据呢,因为&0xff 所以要返回一个int型数据,和以后的-1编码相区别

int read(buf):把读取到的字符存储在一个临时缓冲区中,返回读取的个数。所以呢我们要定义两个变量,一个是len 一个是buf 

比如这样 :

import java.io.*;
class IOTest
{
		public static void main(String[] args)throws IOException
		{
				FileReader fr=new FileReader("abc.txt");
				int ch=fr.read();
				System.out.println(ch);
				int len=0;
				char[]buf=new char[1024];
				len=fr.read(buf);
				System.out.println(new String(buf,0,len));
				
		}
}

  

我觉得java本身对读取这个动作,有个角标的动作,(我抓取了一大票的数据比如1024个字符(2k),然后有一个计算器,一个数组的索引),一个count--,一个Index++,一个数据要来检测什么时候要给数组read,一个用来获取数据

当然系统的笼统的理解就是源(InputStream Reader)对自己干过什么事情是有记忆的。它能做的只有读了,所以它呢 有个记忆功能。这样我们就可以合理的避开底层的实现。

Writer的基本方法

void Write(int c)把指定字符写入到流中  注意的是目的地--流(缓冲区) 因为我们要有一个动作,就是对应编码表(查表)所以我们要存到缓冲区 所以要把数据存到你想去的地方的时候,我们就要flush().

void Write(char[] buf) 把对应的字符数组 写入到流中

void Write(String str)把对应的字符串写入到流中

InputStream  同上类似只不过char变成了byte

OutputSream  也是类似 只不过没有写入字符串的方法  如果你想把“串串香’‘写到目的地(不用写入(缓冲区,流)因为不要查表 )记得getBytes

如何确定应该什么时候用什么流呢?首先我们要明确源和目的

1.源

首先源:Input Reader

其次是不是纯文本文件? yes Reader

读取的设备是哪个?内存,硬盘还是键盘

2.目的

目的:OutputStream Writer

其次是不是纯文本文件?

写入的设备是哪个?内存 硬盘 还是控制台

若果是键盘和控制台的话就要涉及 转换流 InputStreamReader  OutputStreamWriter

那么我接下来就介绍几个常用的流对象

  FileReader InputStreamReader(转换流 涉及指定编码集 一定要用到) FileInputStream   System.in

包装 BufferReader  BufferedInputStream

FileWriter OutputStreamWriter  FileOutStream System.out

包装:BufferedWriter  BufferedOutputStream

  

 

IO流的总结

原文:http://www.cnblogs.com/theones2015/p/5100921.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!