Java FileInputStream和FileOutputStream的使用

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值