在每次使用FileInputStream的read方法时,需要用到字节数组bytes和真实读取长度len,如代码:
public static void read(){
File file = new File("D:/学习/Android/代码/Workplace/Java_8_1_File/a.txt");
try {
//针对文件创建一个输入流
InputStream in = new FileInputStream(file);
byte[] bytes = new byte[1024*1024*10];//定义一个10MB的字节数组
int len = -1;//每次真实读取的长度
StringBuffer buf = new StringBuffer();
try {
while((len = in.read(bytes))!=-1){
buf.append(new String(bytes,0,len));
}
in.close();//关闭
System.out.println(buf);
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
,其中在循环里,buf.append那一句中,每一次都把0处len字节数加入到buf中,那么倘若文件的数据是:
01234
为何最后输出的结果不是:
001012012301234
呢?