JavaIo编程(字符流)

2.3字符输出流:Writer
Writer类常用方法:
void write(char[] cbuf) 输出字符数组数据
abstract void write(char[] cbuf, int off, int len) 输出字符数组的一部分
void write(String str) 输出字符串数据
与OutputStream类的定义类似,但是比起OutputStream还多实现了一个Appendable接口。(都是追加操作)

因为Writer本身也是一个抽象类,所以需要一个子类来进行文件操作——FileWriter

使用Writer类实现内容输出:

import java.io.*;

public class TestWriter {
	public static void main(String[] args) throws Exception{
		File file = new File("D:" + File.separator + "demo"+
				File.separator + "test2.txt");	//第一步:定义要输入文件的路径
		if(!file.getParentFile().exists()){
			file.getParentFile().mkdirs();		//如果目录不存在,则创建文件目录
		}
		Writer out = new FileWriter(file);		//第二步
		String str = "今天星期二,今晚不睡觉";			//定义输出内容
		out.write(str);							//第三步:输出字符串数据
		out.close();							//第四步:关闭输出流
	}
}

2.4字符输入流:Reader
Reader类常用方法:
int read() 读取单个字符
int read(char[] cbuf) 读取数据到字符数组中,返回读取长度
abstract int read(char[] cbuf, int off, int len) 将数据读取到部分字符数组中,同时返回读取长度

Writer类中存在直接输出字符串的操作, 但Reader类中并没有直接返回字符串的操作。
这是因为输出数据时可以采用追加的模式,所以随着时间的推移,文件可能变得非常庞大,如果Reader类中提供了直接读取全部数据的方式,则有可能造成数据溢出。
(Writer输出的是程序允许的数据量,所以可以直接输出,而Reader因为追加的关系,不确定)

因为Reader本身也是一个抽象类,所以需要一个子类来进行文件操作——FileReader
使用Reader读取数据:

import java.io.*;

public class TestReader {
	public static void main(String[] args) throws Exception{
		File file = new File("D:"+ File.separator +"demo" + 
								File.separator +"test2.txt");	//第一步
		if(file.exists()){
			Reader input = new FileReader(file);				//第二步
			char data [] = new char [123];
			int len =input.read(data);										//第三步
			input.close();										//第四步
			System.out.println(new String(data,0,len));
		}
	}
}	
发布了30 篇原创文章 · 获赞 1 · 访问量 1911

猜你喜欢

转载自blog.csdn.net/Zzh1110/article/details/103043432