Java基础--------(7)IO流Reader和Writer

来源:互联网 发布:网络语芭比是什么意思 编辑:程序博客网 时间:2024/05/18 03:02

一、简述

Reader和Writer是专门用于读写字符流的抽象类。
Writer和Reader有许多子类,且子类肯定重写了父类的write或者read的方法。

字节流处理单元为1个字节, 操作字节和字节数组。
与字节流不同的是,字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串。
字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
所以可以通过使用Reader和Writer类向使用其他类型的流以及字符串进行输入和输出。

二、转换流

想要通过Reader和Writer对流进行输入输出,必定需要实现两种流的转换。
InputStreamReader:将字节输入流转换成字符输入流。
OutputStreamWriter:将字节输出流转换成字符输出流。

字符,首先要考虑的就是编码问题,所以,转换流有个重要的功能就是能设置编码,构造函数第二个参数传入对应编码。new OutputStreamWriter(out,”utf-8”)

三、字符流对象

1.BufferedReader 和 BufferedWriter
可以按行读写的缓冲输入输出流

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class BufferedReaderDemo {    public static void main(String[] args) {        InputStreamReader isr = null;        OutputStreamWriter osr = null;        BufferedReader br = null;        BufferedWriter bw = null;        try {            File bwtxt = new File("."+File.separator+"bw.txt");            if(!bwtxt.exists())                bwtxt.createNewFile();            File brtxt = new File("."+File.separator+"bw.txt");            if(!brtxt.exists())                brtxt.createNewFile();            osr = new OutputStreamWriter(new FileOutputStream(bwtxt),"utf-8");//设置编码            isr = new InputStreamReader(new FileInputStream(brtxt),"utf-8");            bw = new BufferedWriter(osr);            bw.write("哈哈哈哈哈哈 22222");//写入字符串            bw.newLine();//根据对应操作平台,插入换行符            bw.write("啊啊啊啊啊啊啊\n啊啊啊啊啊啊啊啊啊啊啊啊\n啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊");            bw.flush();//刷新流            br = new BufferedReader(isr);            int i=0;            while(br.read()!=-1){                System.out.println(br.readLine());//读取一行,没有数据为null                i++;            }            isr.close();            osr.close();        } catch (Exception e) {            e.printStackTrace();        }    }}

2.CharArrayWriter和CharArrayReader

CharArrayReader的作用就是把字符数组作为源读取

import java.io.CharArrayReader;import java.io.CharArrayWriter;import java.io.IOException;import java.util.Arrays;public class CharArrayReaderDemo {    public static void main(String[] args) {        try {            CharArrayWriter caw = new CharArrayWriter();            caw.write("123哈啊哈哈123");            CharArrayReader car = new CharArrayReader(caw.toCharArray());            char[] cbuf = new char[100];            car.read(cbuf);            System.out.println(Arrays.toString(cbuf));        } catch (IOException e) {            e.printStackTrace();        }    }}
原创粉丝点击