字节输入输出流

输入流

InputStream------抽象类

|-----------------------------|-------------------------------|
| 方法名 | 说明 |
| public void close() | 关闭此输入流并释放与此流相关联的任何系统资源。 |
| public abstract int read() | 从输入流读取数据的下一个字节。 |
| public int read(byte\[\] b) | 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。 |

FileInputStream

构造方法

复制代码
    // 使用File对象创建流对象
    File file = new File("a.txt");
    FileInputStream fos = new FileInputStream(file);
      
    // 使用文件名称创建流对象
    FileInputStream fos = new FileInputStream("b.txt");

实例方法

复制代码
// 一次读取一个字节 :read方法,每次可以读取一个字节的数据,提升为int类型,读取到文件末尾,返回-1

记得转为char 类型

// 主要使用这种
     byte[] b = new byte[1024];
    int read = inputStream.read(b);
    System.out.println(read);
    // 为空的地方 就会放空
    System.out.println(new String(b).trim());

// 读取到末尾,返回-1

    //循环读写
    // 1.创建流对象
        // 1.1 指定数据源
        FileInputStream fis = new FileInputStream("D:\\test.jpg");
        // 1.2 指定目的地
        FileOutputStream fos = new FileOutputStream("test_copy.jpg");

        // 2.读写数据
        // 2.1 定义数组
        byte[] b = new byte[1024];
        // 2.2 定义长度
        int len;
        // 2.3 循环读取
        while ((len = fis.read(b))!=-1) {
            // 2.4 写出数据
            fos.write(b, 0 , len);
        }

BufferedInputStream

------带有缓冲区的输入流

构造方法

复制代码
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt"));

实例方法

BufferedInputStream本身没有特别重要的属于自己的方法。

输出流

OutputStream------抽象类

|-------------------------------------------------|------------------------------|
| public abstract void write(int b) | 将指定的字节输出流。 |
| public void write(byte\[\] b) | 将 b.length字节从指定的字节数组写入此输出流。 |
| public void write(byte\[\] b, int off, int len) | 从指定的字节数组写入 len字节,从偏移量 off开始输 |
| public void close() | 关闭此输出流并释放与此流相关联的任何系统资源。 |
| public void flush() | 刷新此输出流并强制任何缓冲的输出字节被写出。 |

FileOutputStream

构造方法

1、该路径下,如果没有这个文件,会创建该文件。

2、如果有这个文件,会清空这个文件的数据。

复制代码
// 使用File对象创建流对象
        File file = new File("a.txt");
        FileOutputStream fos = new FileOutputStream(file);
      
// 使用文件名称创建流对象 用这种方式创建流时,其实路径是在项目下
        FileOutputStream fos = new FileOutputStream("b.txt");

// 弊端 每次写入都会清空数据
// 这两个构造方法,参数中都需要传入一个boolean类型的值, append 
//true 表示追加数据,false 表示清空原有数据。也就是说默认为false

实例方法

复制代码
// 1、 写单个字节 :write(int b)
    fos.write(97); // 写出第1个字节 a
    fos.write(98); // 写出第2个字节 b
    fos.write(99); // 写出第3个字节 c
    
// 2、写出字节数组 write(byte[] b)
    // 将一个字符串变为字节数据 即可
    String str = "你好";
    byte[] bytes = str.getBytes();
    outputStream.write(bytes);

// 3、写出指定长度字节数组 write(byte[] b, int off, int len) 每次写出从off索引开始,len个字节


// 写出换行
    Windows系统里,每行结尾是 回车+换行 ,即\r\n
    Unix系统里,每行结尾只有 换行 ,即\n
    Mac系统里,每行结尾是 回车 ,即\r。从 Mac OS X开始与Linux统一
    
    // 写出换行时,需要转为byte数组
    outputStream.write("\r\n".getBytes());

BufferedOutputStream

------带有缓冲区的字节输出流,将输出的数据先放在缓冲区中,在通过flush刷入到磁盘中

构造方法

复制代码
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("a.txt",true));

实例方法

------没有属于自己的有用的方法

相关推荐
特立独行的猫A1 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
大可不必了6 小时前
03 函数定义和调用
开发语言·python
I_belong_to_jesus6 小时前
C++关于分支预测的优化1
开发语言·c++·算法
承渊政道7 小时前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame
爱学习的程序媛7 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
budingxiaomoli8 小时前
Spring统一功能处理
java·后端·spring
eggwyw8 小时前
Anaconda安装卸载的详细流程指南
开发语言·python
Flynn Liang10 小时前
可观测性与成本治理:一次对话的 17 个观测点
java·langchain·可观测性·micrometer·langchain4j·token 成本·llm 监控
金銀銅鐵10 小时前
带您看懂字节码指令(三):同一行加法,为什么有四种指令
java·jvm
another heaven13 小时前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++