与字节流区别
字节流的读写操作以byte为单位.缓冲区就是-个byte[]
字符流的读写操作以char为单位.缓冲区就是-一个char]
字符流操作
在D:\test_dir目录下复制一个char2文本文件
import java.io.*;
public class IODemo {
public static void main(String[] args) {
copyFile();
}
private static void copyFile() {//自己设置缓冲区
//处理文本文件,需要使用字符流
try(FileReader fileReader = new FileReader("D:\\test_dir\\char.txt");
FileWriter fileWriter = new FileWriter("D:\\test_dir\\char2.txt")){
char[] buffer = new char[1024];
int len = -1;
while ((len = fileReader.read(buffer)) != -1){
fileWriter.write(buffer,0,len);
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
使用内置buffer缓冲区
//使用内置buffer缓冲区
private static void copyFile1 () {
try(BufferedReader bufferedReader = new BufferedReader(new FileReader("D:\\test_dir\\char.txt"));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("D:\\test_dir\\char3.txt"))) {
char[] buffer = new char[1024];
int len = -1;
while ((len = bufferedReader.read(buffer)) != -1){
bufferedWriter.write(buffer,0,len);
}
}catch (IOException e) {
e.printStackTrace();
}
}
按行读取
记得读取的时候需要加换行符,否则读取的时候只能读取一行或者读取的内容全部连在一行。
//带缓冲区的字符流中有一种特殊的用法,按行读取
private static void copyFile2 () {
try(BufferedReader bufferedReader = new BufferedReader(new FileReader("D:\\test_dir\\char2.txt"));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("D:\\test_dir\\char4.txt"))) {
String line = "";
while ((line = bufferedReader.readLine()) != null) {
System.out.println("line: " + line);
bufferedWriter.write(line+"\n");
}
}catch (IOException e) {
e.printStackTrace();
}
}
}