读取的形式可分为
- 按字节读取
- 按字符读取
- 按行读取
不管以什么样的方式读取,都要提供文件,这是肯定的。
不同的是,按字节读取使用InputStream.read(),按字符读取使用inputStreamReader.read(),而按行读取使用bufferedReader.readLine()
个人理解:
- 因为数据是以字节为单位存储的,如果要按字节读取,将file对象获取到inputStream就可以使用read()方法了;
- 如果要按字符读取,还要对字节流以某种方式进行编码,InputStreamReader默认使用Unicode编码方式;
- 经过前两个,可以一次读取一个字节、一个字符,但不能一次读取更多数据,这时BufferedReader就派上用场了;
File file = new File(fileName);
按字节方式读取
InputStream inputStream = new FileInputStream(file);
int temp;
while((temp = inputStream.read()) != -1){
System.out.print((char)temp)
}
按字符方式读取
InputStream inputStream = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(inputStream);
int temp;
while((temp = reader.read()) != -1){
System.out.print((char)temp);
}
reader.close();
按行读取
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String temp;
while((temp = bufferedReader.readLine()) != null){
System.out.println(temp);
}
bufferedReader.close();