FileInputStream和FileReader都是用于读取文件的输入流,二者的不同在于,FileInputStream是以字节流的方式读入数据,而FileReader是以字符流的方式读取的。
举个例子
saber万岁!!!
这句话有英文字母,有汉字,还有标点符号。
英文字母是一个字节
汉字占两个字节
标点符号占两个字节
但是他们每个都是一个字符
public void ReadFileByFileStreamInput(File file) {//以字节方式读数据
try {
FileInputStream fis=new FileInputStream(file);
byte[] buffer=new byte[2048];
int len=fis.read(buffer);
System.out.println("文件的内容是:"+new String(buffer,0,6));
fis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
他的结果预想是saber万,但是实际情况确实“万”并没有被读完,所以没有被完全解析
public void ReadFileByFileReader(File file) {
try {
FileReader fr=new FileReader(file);
int i;
char[] buffer=new char[2048];
while((i=fr.read(buffer))!=-1) {
System.out.println(new String(buffer,0,6));
}
fr.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是如果以字符的方式读取的话,“万”字就可以被都出来了。