IO流-- 字符流

一、字符流介绍

➢FileInputStram类和FileOutputStream类 虽然可以高效率地读/写文件,但对于Unicode编码的文件,使用它们有可能出现乱码(中文);所以,从JDK1.1开始,java.io 包中加入了专门用于字符流处理的类,它们是以Reader和Writer为基础派生的一系列类。
➢使用字符流将涉及到以下4个类:
●FileReader类和FileWriter类;
●BufferedReader类和BufferedWriter类

二、 字符流 读取流的操作

public class ReaderDemo {
	public static void main(String[] args) {
		//创建一个File对象用来指明你读取的文件位置
		File file = new File("t3.txt");
		//创建字符流的缓存流
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(file));
			//开始进行读操作
			String str;
			//使用循环来读取
			while((str=br.readLine())!=null) {//字符流读到末尾是null
				System.out.println(str);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if(br!=null) {
				try {
					br.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}

三、字符流 写入流操作

public class WriterDemo {
	public static void main(String[] args) {
		//先不创建File对象
		BufferedWriter bw = null;
		try {
			bw = new BufferedWriter(new FileWriter("t4.txt"));
			//调用方法进行写数据
			bw.write("大家好!");
			bw.append("今天天气真好");
			bw.write("你觉得对不对啊?");
			bw.newLine();//换行
			bw.write("请多多指教");
			//我们很多时候,除了使用缓冲流来完成字符流的输出的话,还喜欢使用PrintWriter这个流
			PrintWriter pw = new PrintWriter("t5.txt");
			pw.println("你好啊!");
			pw.println("我好啊!");
			pw.flush();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if(bw!=null) {
				try {
					bw.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}

四、输入流和输出流结合

public class ReaderAndWriterDemo {
	public static void main(String[] args) {
		//创建字符流的缓存流
		BufferedReader br = null;
		PrintWriter pw = null;
		try {
			br = new BufferedReader(new FileReader("t3.txt"));
			pw = new PrintWriter(new FileWriter("t5.txt",true));
			//开始进行读操作
			String str;
			//使用循环来读取
			while((str=br.readLine())!=null) {//字符流读到末尾是null
				pw.append(str);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if(pw!=null) {
				pw.close();
			}
			if(br!=null) {
				try {
					br.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}

三、FilerReader和FileWriter

1、FileReader的介绍

FileReader类是Reader下InputStreamReader的子类,它是用来读取文件的便捷类,允许
以字符流的形式对文件进行读操作,虽然我们可以通过构造方法来创建一个该对象,但是该对
象的读取方式是以字符一个个读取的形式来读取文件的,效率低下,所以我们一般直接使用它
的过滤流(BufferedReader)来进行读取文件内容的操作。

2、FileWriter的介绍

FileWriter类是Writer’下的OutputStreamWriter的子类,它是用来写文件的便捷类,它跟
FileReader-样,我们一般是直接操作它的过滤流(BufferedWriter)来写入文件内容的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值