Java IO流系列(二)—— 字符流

时间:2021-06-04 21:35:21

前言:这篇介绍以大家最熟悉的操作文件的字符输入输出流FileWriter,FileReader为例简单介绍字符流的入门使用方式。
原文出处:http://blog.csdn.net/u014158743/article/details/52665409

为使代码清晰,一律用throws先抛出异常。

文件输出流FileWriter

寄新手:向文本文件中写入数据,因为是文本文件,所以使用字符流,又因为是写入,所以使用字符流中的输出流Writer,又因为是文件,所以使用可以操作文件的字符输出流类。下文同,本系列同。

public static void main(String[] args) throws IOException {
//1:创建文件输出流对象和被写入数据的文件相关联
//文件不存在会创建,文件存在会被覆盖
FileWriter fw = new FileWriter("temp.txt"); //入门语:与.java同级目录

//2:使用文件输出流对象向文件中写入数据
//数据没有写入到文件,写入到流内部的的一个数组,这个数组是一个字节数组,因为要查编码表
fw.write("abcdef");

//3:把内部缓冲中的数据写入到文件
//fw.flush();

fw.write("gh");//刷完之后可以继续写

fw.close();//关闭此流,同时会刷新流中的数据

//fw.write("ww");//流已经关闭,不能继续写入了

}

文件的续写

public static void main(String[] args) throws IOException {
// 该平台下分隔符(换行)
final String SEPARATOR = System.getProperty("line.separator");

FileWriter fw = new FileWriter("temp.txt",true);

fw.write("ijklmn");

fw.write(SEPARATOR);

fw.write("hello");

fw.close();
}

文件输入流FileReader

public static void main(String[] args) throws IOException
{
//创建文件读取流的对象和被读取的文件相关联
FileReader fr = new FileReader("temp.txt");//被读取的文件需要事先存在

//1、使用一次读一个字符的功能读取
int num;
while((num = fr.read()) != -1) {
System.out.print((char)num);
}

//2、使用数组读取文件
char[] arr = new char[1024];
int num = 0;
while((num = fr.read(arr)) != -1) {
System.out.print(new String(arr, 0, num));
}

fr.close();
}

复制文件小Demo:

//复制一个文件
import java.io.*;
class Demo {
public static void main(String[] args)throws IOException {
//创建文件读取流和被复制的文件相关联
FileReader fr = new FileReader("temp.txt");

//创建文件输出流和复制的新文件相关联
FileWriter fw = new FileWriter("temp_copy.txt");

char[] arr = new char[1024];
int num;
while((num = fr.read(arr)) != -1) {
fw.write(new String(arr, 0, num));
}

fr.close();
fw.close();
}
}

结束语:到这里,相信大家都会了字符流的基本读写,更详细的用法会在后续的文章更新。各位也可以关注我左上角的新浪微博,更新文章我会第一时间发微博通知大家。下篇文章将介绍字符流的缓冲读取流、写入流,欢迎关注。

本系列开启篇:
http://blog.csdn.net/u014158743/article/details/52664986