• 解析java中的文件字节输出流


    解析java中的文件字节输出流

    1 含义

    字节输入流的后缀为OutputStream,文件字节输出流的全名为FileOutputStream

    2 作用

    以字节的形式对内存中存储的数据写入到磁盘上的某个文件上(数据是从内存流向磁盘中的文件)

    3 如何用

    3.1 构造方法

    3.1.1 FileOutputStream(文件路径)

    ​ 默认传一个文件路径过去,这个文件可以没有,但是目录一定要存在,没有就会新建一个文件,然后把通过write方法把内存的数据的文件写入到该文件中

    ​ 若文件存在,那默认是先把之前文件里面的内容清空,然后再添加上新的内容

    3.1.2 FileOutputStream(文件路径,是否追加)

    同样的,需要去写入的文件的目录一定要存在,不然会出现FileNotFoundException异常
    在这里插入图片描述

    若你是否追加那里填入一个true,那么之前文件里面的内容不会清空,只是把新的内容追加到文件的末尾而已,若填入的是false,那就是先清空,然后再去追加内容

    3.1 使用方法

    3.1 写入一个字节

    3.1.1 核心思路
    a 声明一个文件字节输出流FileOutputStream对象,并赋值为null
    b 实例化FileInputStream对象并通过try…catch去处理异常
    c 通过实例对象.write(字节)去写入一个字节,这里既可以传入数字,也可以传入字符,使用该方法需要try…catch捕获异常
    d ascil的数字转换成对应的字符,然后写入到指定的文件
    e. 写完后需要对象名.flush()方法刷新状态
    f 最后在finally语句中对实例对象进行非空判断,若不为null则需要通过对象名.close()方法去关闭这个文件字节输出流(不关闭会造成资源的浪费),在关闭的时候也要去try…catch去捕获异常
    3.1.2 示例代码
    temp.txt文件内容

    在这里插入图片描述

    FileOutputStreamTest类
    package Work03;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.charset.StandardCharsets;
    
    public class FileOutputStreamTest {
        public static void main(String[] args) {
            FileOutputStream fos=null;
            try {
                fos=new FileOutputStream("src/Work03/temp.txt",true);
                fos.write('a');
                //这个输入字符会自动转换成对应的ascill数字
                fos.flush();
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fos != null) {
                    //肯定是需要关闭文件字节输出流,因为不关闭的话,会占用系统的空间
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    
    
    • 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
    3.1.3 示例代码运行截图

    在这里插入图片描述

    3.2 写入一个字符串

    3.2.1 核心思路
    a 声明一个FileOutputStream对象并赋值为null;
    b 实例化FileOutputStream对象,并需要通过try…catch去捕获异常
    c 通过字符串的getBytes方法将字符串转换成byte类型数组(对应的ascill值的byte数组)
    d 使用对象名.write(bytes),把bytes数组写入到指定的文件中,这里使用这个方法是需要try…catch去处理异常
    e 使用对象名.flush刷新一下状态
    f 判断对象是否为null,若为null,则对象名.close去关闭文件字节输出流;使用close方法我们还是需要去捕获异常
    3.2.2 示例代码
    temp.txt文件

    在这里插入图片描述

    FileOutputStreamTest文件
    package Work03;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class FileOutputStreamTest {
        public static void main(String[] args) {
            FileOutputStream fos=null;
            try {
                fos=new FileOutputStream("src/Work03/temp.txt",true);
                String content="\nHello,java!!!";
                //换行符\n也在windows系统下有作用
                fos.write(content.getBytes());
                fos.flush();
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fos != null) {
                    //肯定是需要关闭文件字节输出流,因为不关闭的话,会占用系统的空间
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    
    
    • 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
    3.2.3 示例代码运行截图

    在这里插入图片描述

    3.3 写入指定的字符串(开始位置给出,长度给出)

    3.3.1 核心思路
    a 声明一个文件字节输出流对象FileOutputStream,并给其赋值为null
    b 实例化文件字节输出流对象,需要try…catch捕获异常
    c.通过字符串的getBytes转换成byte数组
    d 输出流对象.write(bytes,offest,length),offest是你想从字符串的哪里开始写入,length是从offest位置开始写入的字节的个数,调用write方法需要try…catch异常
    e 输出流对象.flush刷新一下
    f.在finally语句中里面判断文件字节输出流对象,若不为空,就需要对象名.close()去进行关闭文件字节输出流这个操作,用close方法还需要去try…catch捕获异常
    3.3.2 示例代码
    temp.txt

    在这里插入图片描述

    FileInputStreamTest类
    package Work03;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class FileOutputStreamTest {
        public static void main(String[] args) {
            FileOutputStream fos=null;
            try {
                fos=new FileOutputStream("src/Work03/temp.txt",true);
                String content="Java,c#";
                //换行符\n也在windows系统下有作用
                fos.write(content.getBytes(),0,4);
                fos.flush();
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (fos != null) {
                    //肯定是需要关闭文件字节输出流,因为不关闭的话,会占用系统的空间
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    
    
    • 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
    3.3.3 示例代码运行截图

    在这里插入图片描述

  • 相关阅读:
    使用任务定时执行软件的定时关机功能,控制电脑可用时间段
    【回眸】安装Hightec后如何导入源码及相关环境配置
    vue之封装一个 table组件 ( 列表之中 渲染其他组件 )
    伪类与伪元素的区别
    【解决方案】多租户技术架构设计入门(一)
    all3dp.com网站中全部Arduino项目(2022.7.1)
    CSS 实现卡片边框渐变动画
    数据挖掘——机器学习
    kubernetes核心组件的运行机制
    Vue3 前置知识
  • 原文地址:https://blog.csdn.net/SSS4362/article/details/126166094