河北省建设执业注册中心网站,wordpress视频居中,建材做网站好吗,门户网站 cmsJava学习-IO流-字符流-FileReader
字符流 字节流 字符集 输入流#xff1a;默认一次读一个字节#xff0c;遇到中文时一次读多个字节 输出流#xff1a;底层把数据按照指定编码方式编码#xff0c;变成字节写入文件 使用场景#xff1a;纯文本文件读写
// …Java学习-IO流-字符流-FileReader
字符流 字节流 字符集 输入流默认一次读一个字节遇到中文时一次读多个字节 输出流底层把数据按照指定编码方式编码变成字节写入文件 使用场景纯文本文件读写
// IO流体系
// ↙ ↘
// 字节流 字符流
// ↙ ↘ ↙ ↘
//InputStream OutputStream Reader Writer// 字符流
// ↙ ↘
// Reader Writer
// ↓ ↓
//FileReader FileWriterFileReader操作本地文件的字符输入流 FileWriter操作本地文件的字符输出流
FileReader
1.创建字符输入流对象 public FileReader(FIle file)创建字符输入流关联本地文件 public FileReader(String pathname)创建字符输入流关联本地文件 注如果文件不存在直接报错
2.读取数据 public int read()读取数据读到末尾返回-1 public int read(char[] buffer)读取多个数据读到末尾返回-1 注按字节进行读取遇到中文一次读多个字节读取后解码返回一个整数
3.释放资源 public int close()释放资源/关流
空参read()
例 xx.txt 生活是默默地坚持毅力是永久的享受。
FileReader fr new FileReader(...\\xx.txt);
int ch;
while((chfr.read())!-1){sout(ch );
}
//→ 29983 27963 26159 40664 40664 22320 22362 25345 65292 27589 21147 26159 27704 20037 30340 20139 21463 12290
fr.close();read()底层 1.默认每次读取一个字节遇到中文一次读取多个字节 2.读取之后解码并转成十进制作为返回值
FileReader fr new FileReader(...\\xx.txt);
int ch;
while((chfr.read())!-1){sout(char(ch));
}
//→ 生活是默默地坚持毅力是永久的享受。
fr.close();带参read()
FileReader fr new FileReader(..\\xx.txt);
char[] chars new char[2];
int len;
while((lenfr.read(chars))!-1){sout(new String(chars,0,len));
}
//→ 生活 \n 是默 \n 默地 \n 坚持 \n 毅 \n 力是 \n 永久 \n 的享 \n 受。
fr.close();read()底层原理
空参read()读取数据解码返回数字 带参read()读取数据解码强转放到数组中
字符输入流底层原理详解
1.创建字符输入流对象 底层关联文件并创建缓冲区缓冲区大小8192字节 2.读取数据 底层2.1.判断缓冲区中是否有数据可以读取 2.2.缓冲区中没有数据从文件中获取数据装到缓冲区每次尽可能把缓冲区装满如果文件中没有数据返回-1 2.3.缓冲区中有数据从缓冲区中读取数据 空参read()一次读取一个字节遇到中文一次读取多个字节把字结解码转成十进制返回 有参read()读取字节解码强转成字符存入数组
//xx.txt8192个a bcdefg
FileReader fr new FileReader(..\\xx.txt);
fr.read();//8192个a存入缓冲区
FileWriter fw new FileWriter(..\\xx.txt);//清空文件
int ch;
while((ch fr.read())!-1){sout(char(ch));}
fw.close();
fr.close();只输出8192个a这8192个a在文件清空之前已存入缓冲区不会输出bcdefg因为已经被清空。