package arithmetic;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FileIO {
public static void main(String[] args) throws Exception {
//b.txt里是12345
//FileInputStream和FileOutputStream
//第一次循环,字节数组长度为3。依次读取123,并填充
//第二次循环,数组里是123,此次读取45,替换掉12,变成453
//所以循环了2次,第一次输出123,第二次输出453
FileInputStream fStream = new FileInputStream("F:/b.txt");
//文件输出
FileOutputStream fos = new FileOutputStream("F:/aa.txt",true);
fos.write("\r\n".getBytes());
byte[] bs = new byte[3];
int basic;
int count=0;
String writeStr = "测试数据文件采用的是ANSI格式,放入3个数字,因此为3个字节,这里测试读3次,从代码中可以看出,b为一个byte数组,大小为2,即每次可以存放2个字节。那么问题来了,第一次读取的时候读到2个字节返回很好理解,而第2次的时候,由于只剩下一个字节,此处到了文件的结尾,按照朋友对API文档的理解,应该返回-1才对";
while ((basic = fStream.read(bs)) != -1) {
//边读边写
fos.write(bs, 0, 3);
System.out.println(new String(bs, 0, 3));
count++;
}
fos.write(writeStr.getBytes());
fStream.close();
System.out.println("读取次数:"+count);
System.out.println("单字节读取==========");
//单个字节一个一个读
FileInputStream fst = new FileInputStream("F:/b.txt");
int f;
while ((f=fst.read()) != -1) {
System.out.println((char)f);
}
fst.close();
fos.close();
}
}
运行结果:
123
453
读取次数:2
单字节读取==========
1
2
3
4
5
使用长度为3的数组读取字节流的时候,b.txt里的文本是12345,第一次读取是数组是123,第二次读取长度为2,会覆盖数组前2个元素,因为第二次读取后,数组的值是453