一、IO结构图
二、字符流
1、BufferedReader类
Reader操作会导致对底层字符或者字节流进行相应的读取请求,读取时指定具体的类型读取可以减小开销
例如:指定其为FileReader或者InputStreamReader
(1)构造方法
BufferedReader(Reader in) //创建一个使用默认大小输入缓冲区的缓冲字符输入流
BufferedReader(Reader in,int sz) // 创建一个使用指定大小输入缓冲区的缓冲字符输入流
(2)基本方法
- close() //关闭该流并释放与之关联的所有资源
- read() //读取单个字符 若到流末尾则返回-1 注:返回的是一个ASCII码
- read(char [] cbuf,int off,int len) //将字符读入到数组的某一部分。
- readLine() // 读取一个文本行 返回读入的字符串
- skip(long n) //n:跳过的字符 返回实际跳过的字符数
测试代码
public static void main(String [] args){
/*BufferReader测试*/
char [] x={'1','2','3','4','5','6','7','8','9'};
File file=new File("/home/260198/文档/22/test.txt");
String temp="";
try {
BufferedReader br=new BufferedReader(new FileReader(file),2);
/*将文件读取到数组x中,起始位置2,长度为5*/
System.out.println("br:"+br.read(x,2,5));
/*读取文件跳过3个字符*/
System.out.println("br:skip "+br.skip(3));
/*读取单个字符---返回的是ASCII码*/
int m=br.read();
System.out.println("br:read "+m);
/*转换为对应的字符*/
System.out.println("br:read "+(char)(m));
for(int i=0;i<x.length;i++){
System.out.print(x[i]+" ");
}
while((temp=br.readLine())!=null){
System.out.println(temp);
Thread.sleep(600);
}
} catch (Exception e) {
e.printStackTrace();
}}
2、BufferedWriter
将文本写入字符输出流,缓冲各个字符,同样建议指定读入的类型以减小开销
(1)构造方法
BufferedWriter(Writer out) //创建使用默认大小输出缓冲区的缓冲字符输出流
BufferedWriter(Writer out,int sz) //创建使用指定大小输出缓冲区的缓冲字符输出流
(2)基本方法
write(String s) //写入字符 该方法根据参数的不同读入不同的数据类型
newLine() //写入一个行分隔符-----换行
flush() //刷新该流的缓冲 注:若不刷新,则不能写入成功
close() //关闭该流 注:在关闭之前一定要刷新缓冲