字符流按照流向可以分为输出字符流(Writer)和输入字符流(Reader),
Reader 是一个抽象类,常用的方法如下:
public int read() 以字符为单位读取数据
public int read(char ch[]) 将数据读入 char 类型数组,并返回数据长度
public abstract int read(char ch[],int off,int len) 将数据读入 char 类型数组的指定区间,并返回数据长度
public abstract void close() 关闭数据流
public long transferTo(Writer out) 将数据直接读入字符输出流
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Test {
public static void main(String[] args) {
File file = new File("C:/Users/73981/Desktop/test.txt");
try {
Reader reader = new FileReader(file);
char[] chars = new char[8];
int length = reader.read(chars);
System.out.println("数据长度"+length);
System.out.println("遍历数组");
for(char c:chars) {
System.out.println(c);
}
reader.close();
System.out.println("************************");
reader = new FileReader(file);
chars = new char[8];
length = reader.read(chars, 2, 6);
System.out.println("数据长度"+length);
System.out.println("遍历数组");
for(char c:chars) {
System.out.println(c);
}
reader.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出字符流 Writer,常用方法如下:
public void write(int c) 以字符为单位向外写数据
public void write(char cha[]) 将 char 数组中的数据写出
public abstract void write(char cha[],int off,int len) 将 char 数组中指定区间的数据写出
public void write(String str) 将 String 数据写出
public void write(String str,int off,int len) 将 String 类型指定区间的数据写出
public abstract void flush() 强制将缓冲区的数据同步到输出流中
public abstract void close() 关闭数据流
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
public class Test {
public static void main(String[] args) {
File file = new File("C:/Users/73981/Desktop/test.txt");
try {
Writer writer = new FileWriter(file);
// writer.write(20320);
// writer.write(22909);
// writer.write("你好");
// char[] chars = {'你','好','世','界'};
// writer.write(chars,2,2);
writer.write("你好HelloWorld", 2, 2);
writer.flush();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- 以字符为单位的输入流的框架图:
- 以字符为单位的输出流的框架图:
- 以字符为单位的输入流和输出流关联的框架图:
- 字节转换为字符流的框架图:
- 字节和字符的输入流对应关系:
- 字节和字符的输出流对应关系: