FileInputStream
为了学习fileinputstream的文件内容读写的,我从网上找了一篇印度疫情的新闻,内容大概有3000字
使用了byte[] bt = new byte[1024]用来读取txt文件里的内容
一次性读取1024字节内容,再通过循环读取整篇文章
代码如下:
FileInputStream stream;
int n = 0;
try {
stream = new FileInputStream("I:\\Java\\Mars\\新建文本文档.txt");
byte[] bytes = new byte[1024];
while ((n = stream.read(bytes))!=-1) {
System.out.println(new String(bytes));
}
stream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
运行结果为:
整篇文章被读取出来后,多出了一部分重复的内容
经过查询api,原因是用byte数组经过循环,最后一次读取1024个字节时,文本本身在最后一轮循环时字节数已经不足1024个字节,结果导致会从本次循环文本重新开始读取,直到凑够1024个字节
后经修改代码为:
FileInputStream stream;
int n = 0;
try {
stream = new FileInputStream("I:\\Java\\Mars\\新建文本文档.txt");
byte[] bytes = new byte[1024];
while ((n = stream.read(bytes))!=-1) {
System.out.println(new String(bytes,0,n));
}
stream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
结果就正常了。