字符处理是一次处理一个字符,底层仍然是字节序列。字符流的基本使用与字节流类似。
InputStreamReader:按照编码将字节流解析成字符流
OutputStreamReader:按照编码将字符流转换为字节流
public static void main(String[] args)throws IOException {
FileInputStream in = new FileInputStream("D:/Files/test.txt");
InputStreamReader isr = new InputStreamReader(in,"gbk");
FileOutputStream out = new FileOutputStream("D:/Files/test2.txt");
OutputStreamWriter osw = new OutputStreamWriter(out);
char[] buf = new char[8*1024];
int c;
while((c=isr.read(buf, 0, buf.length))!=-1){
osw.write(buf,0,c);
osw.flush();
}
isr.close();
osw.close();
}
二、文件读写流
使用文件读写流FileReader/FileWriter实现上例的代码如下。当FileWriter实例化时,构造参数有一个true,则表示在原文件后追加内容。
public static void main(String[] args)throws IOException {
FileReader fr = new FileReader("D:/Files/test.txt");
FileWriter fw = new FileWriter("D:/Files/test3.txt");
//FileWriter fw = new FileWriter("D:/Files/test3.txt",true);//文件后追加内容
char[] buf = new char[2056];
int c;
while((c=fr.read(buf, 0, buf.length))!=-1){
fw.write(buf, 0, c);
fw.flush();
}
fr.close();
fw.close();
}
三、字符缓冲流
BufferedReader:读取文件,一次读一行
BufferedWriter/PrintWriter:写文件
使用字符缓冲流时,实例化对象需要一步一步向底层进行构造,而使用PrintWriter时可以直接进行构造。代码如下。
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream("D:/Files/test.txt")));
BufferedWriter bw = new BufferedWriter(
new FileWriter("D:/Files/test1.txt"));
PrintWriter pw = new PrintWriter("D:/Files/test6.txt");
String line;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();//由于不能识别换行,所以要加上换行语句
bw.flush();
pw.println(line);
pw.flush();
}
br.close();
bw.close();
pw.close();
}
注:文章根据本站相关课程的学习笔记整理而来,有错误或其他任何问题敬请指正,欢迎共同学习交流!