java基础之字节输入与输出流[48]

java基础之字节输入与输出流[48]



一、字节输入/输出流概念

字节输入输出流:每次只操作一个字节(读取或写入),字节操作流,默认每次执行写入操作会直接把数据写入文件.

io流:
输入流:Input;
输出流:Output

流是一种有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象,即数组在两台设备间传输为流;
流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便进行数据操作;

io流的分类:
根据处理数据类型的不同分为:字符流和字节流;
根据数据流向不同分为:输入流和输出流;
字节是数据传输的基本单位,文件内容也是以字节为单位存储的,从文件中把数据读到程序为输入流,从程序把数据写到文件称为输出流,都是相对于程序;

字节输出流:

OutputStream:此为抽象类,所有输出字节流的超类,向文件中输出使用FileOutputStream类;

字节输入流:

InputStream:所有字节输入流的超类,向程序输入使用FileInputStream;

二、代码演示

 private static void out(){
    //创建指定的文件操作对象
    File f1=new File("D:/files/test1.txt");
    try {
        //创建文件输出流,默认为覆盖内容输出,true表示追加输出
        OutputStream os=new FileOutputStream(f1,true);
        //获取计算机换行符
        String h=System.getProperty("line.separator");
        //要输出的字符
        String ss="你好,字节输出流"+h;
        //将字符输出到文件中
        os.write(ss.getBytes());
        //关闭字节输出流
        os.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private static void in(){
    //先确定要输入的文件
    File f1=new File("D:/files/test1.txt");
    //创建字节输入流对象
    try {
        InputStream is=new FileInputStream(f1);
        //创建一个字节数组,用来接收输入流,长度不可为奇数或1,否则乱码,再不确定长度时需要写while循环,并添加时写0,len:sb.append(new String(bytes,0,bytes.length));
        byte[] bytes=new byte[100];
        //用来存储字节数组的长度
        int len=-1;
        //创建字符流
        StringBuilder sb=new StringBuilder();
        //将输入流的文件循环读取并保存在字节数组中
        while ((len=is.read(bytes))!=-1){
            //将读取出来的字节数组转换成字符添加进字符流
            sb.append(new String(bytes,0,len));
        }
        System.out.println(sb);
//            if (is.read(bytes)!=-1){//在确定字节时可使用if
//                //创建字符流
//                StringBuilder sb=new StringBuilder();
//                //将读取出来的字节数组转换成字符添加进字符流
//                sb.append(new String(bytes));
//                System.out.println(sb);
//            }

        //关闭字节输入流
        is.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
--------------------------------------
out();
in();


三.小结

本章概述了java中文件操作的字节输入/输出流,该类是File类的字节增强实现,在处理一些文件时,可优先选择字节输入/输出流,而不是直接使用File类;
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道而起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值