您的位置:首页 > 职场人生

黑马程序员_IO流之字符流的学习

2012-05-12 13:25 232 查看
---------------------- android培训java培训、期待与您交流! ----------------------一.字符流

1.什么是字符流为什么使用字符流

用字节流读写字符数据时需要人工编码非常麻烦

使用字符流可以自动编码读取的时候自己解读取到字符写出的时候直接写出字符

通常在需要读写字符数据的时候都是用字符流来操作的

2.InputStreamReader

当创建一个字符节入流的时候读取字符数据需要人工编码非常麻烦我们可以使用InputStreamReader从一个字节流中读取字符数据

代码示例:

InputStreamReader in=new InputStreamReader(new FileInputStream("1.txt"));

int len=0;

while((len=in.read())!=-1){

System.out.println((char)len);

}

in.close();

使用构造函数InputStreamReader(InputStream)来包装一个字节输入流然后 调用使用InputStreamReader对象调用read()方法直接读取字符

如果需要制定码表可以使用InputStreamReader(InputStream InputStream对象,"码表类型")

3.OutPutStreamWriter

当我们创建了一个字节输出流的时候需要人工编码 很麻烦我们现在可以使用OutPutStreamWriter想一个字节流中写出字符数据.

代码示例:

Reader r=new InputStreamReader(new FileInputStream("1.txt"));

OutputStreamWriter writer=new OutputStreamWriter(new FileOutputStream("2.txt"));

int len=0;

writer.write("我是中国人");

while((len=r.read())!=-1){

writer.write((char)len);

}

r.close();

writer.close();

使用构造方法OutPutStreamWriter(OutPutStream OutPutStream对象)包装一个字节输出流调用writer(String)方法可以直接写出字符

如果需要制定码表可以使用OutPutStreamWriter(OutPutStream OutPutStream对象,“码表类型”)

4.FileReader是inputStreamReader的子类,如果读取一个平台默认的编码的文本就可以使用FileReader写法区别:

new FileReader("文件名");

new InputStreamReader(new FileInputStream("文件名"))

5FileWriter是OutputStreamWriter的子类如果想相处一个平台默认的编码的文本既可以使用FileWriter 写法区别:

new FileReader("文件名");

new OutPutStreamWriter(new FileOutputStream("文件名"));

代码示例:FileReader fr=new FileReader("1.txt");

int len=0;

while((len=fr.read())!=-1){

System.out.println((char)len);

}

fr.close();

6提高效率

逐个读写字符效率很低的,Reader和Writer都提供了对数组的操作

Reader可以使用reader(char[])的方式一次读取一批数据进入数组

Writer可以使用writer(char[])的方式一次写入数组中的一批数据

7.BufferedReader 和BufferedWriter

和BufferedInputStream与BufferedOutputStream类似,BufferedReader和BufferedWriter都是包装类 都提供了缓冲功能其中BufferedWriter提供了跨平台写出换行的功能

代码示例:

BufferedWriter bw=new BufferedWriter(new FileWriter("3.txt"));

BufferedReader br=new BufferedReader(new FileReader("1.txt"));

int len=0;

while((len=br.read())!=-1){

bw.write((char)len);//这里char加不加饿的没区别

}

br.close();

bw.close();

8.LineNumberReader

是BufferReader的子类,提供了统计行号的功能

getLineNumber()方法获取当前的行号

setLineNumber(int)方法可以设置行号

示例代码:

LineNumberReader lr=new LineNumberReader(new FileReader("1.txt"));

lr.setLineNumber(100);//设置100为为起始行号

String line;

while((line=lr.readLine())!=null){

System.out.println(lr.getLineNumber()+" : "+line);

}

lr.close();----------------------
android培训、java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: