• 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();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    三.小结

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

  • 相关阅读:
    Kubernetes — 核心资源对象 — Controller
    【系统性学习】Linux Shell常用命令
    山西电力市场日前价格预测【2023-10-28】
    程序设计:C语言 UNIX/LINUX 环境变量替换
    CommonJS,ES6 Module以及webpack模块打包原理
    CI/CD 持续集成与持续交付(1)
    【Java】System
    MATLAB算法实战应用案例精讲-【数模应用】线性判别分析(附MATLAB、python和R语言代码实现)
    20230919后台面经整理
    Python Opencv实践 - 霍夫圆检测(Hough Circles)
  • 原文地址:https://blog.csdn.net/weixin_45539338/article/details/127105069