Java IO流(三) 字符流Reader和Writer

Reader字符输入流
Reader类有如下几个读数据会用到的方法:

  • int read():每次读取一个字符,并把它转换为 0~65535 的整数,然后返回读取到的字符。读到末尾返回-1。(为了提高 I/O 操作的效率,建议尽量使用下面两种read()方法)
  • int read(char[] cbuf):将读取到的多个字符存储到 cbuf 中,然后返回读取的字符,读到末尾时返回-1。
  • int read(char[] cbuf,int off,int len):将读取到的多个字符存储进字符数组 cbuf,从索引 off 开始,长度为len字符,返回结果为读取的字符数.

Reader的子类FileReader是专门用于从文件中读取数据到程序中(内存)

package com.mike.io.eg;

import java.io.IOException;
import java.io.File;
import java.io.FileReader;
import java.io.InputStreamReader;

/**
 * @author mike
 * @date 2020-11-26
 * @desc 文件字符输入流demo
 */
public class FileReaderDemo {
	public static void main(String[] args) {
		//定义输入流
		FileReader fr = null;
		try {
			//创建文件对象
			File file = new File("F:\foo.txt");
			//2、创建输入流对象
			fr = new FileReader(file);
			int len = 0;
			char[] buffer = new char[1]; //每次读取一个字符
			while((len = fr.read(buffer)) != -1) {
				System.out.println(new String(buffer,0,len));
			}
		} catch(IOException e) {
			e.printStackTrace();
		}finally {
			try {
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}
	}
}

输出结果

FileWriter输出流
Writer类有如下几个写数据会用到的方法:

  • void write(int c):把一个字符写入到文件中。
  • void write(char[] cbuf):把cbuf字符数组写入到文件中。
  • void write(char[] cbuf,int off,int len):把部分字符数组写入到文件中,从 cbuf 数组的 off 索引开始,写入len个字符。
  • void write(String str):把一个字符串写入到文件中。
  • void write(String str,int off,int len):把部分字符串写入到文件中,从 字符串的 off 索引开始,写入len个字符。

Writer的子类FileWriter是专门用户从程序写入数据到文件中

package com.mike.io.eg;

import java.io.File;
import java.io.IOException;
import java.io.FileWriter;

/**
 * @author mike
 * @date 2020-11-26
 * @desc 字符输出流demo
 */
public class FileWriterDemo {
	public static void main(String[] args) {
		FileWriter fw = null;
		try {
			File file = new File("F:\foo.txt");
			fw = new FileWriter(file);
			fw.write("我是中国人");
		} catch(IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

输出结果

原文地址:https://www.cnblogs.com/gy1010/p/14050725.html