• javaIO流04:FileOutputStream详解


    FileOutputStream

    1. 关系图
      在这里插入图片描述
    2. FileOutputStream类中的方法
    用法解释
    void close()关闭此文件输出流并释放与此流相关联的任何系统资源。
    protected void finalize()清理与文件的连接,并确保当没有更多的引用此流时,将调用此文件输出流的 close方法。
    FileChannel getChannel()返回与此文件输出流相关联的唯一的FileChannel对象。
    FileDescriptor getFD()返回与此流相关联的文件描述符。
    void write(byte[] b)将 b.length个字节从指定的字节数组写入此文件输出流。
    void write(byte[] b, int off, int len)将 len字节从位于偏移量 off的指定字节数组写入此文件输出流。
    void write(int b)将指定的字节写入此文件输出流。
    1. FileOutputStream用法详解
      向文件中写入数据,没有文件就创建文件
     @Test
        public void Test(){
            //目录IOFile下没有news5.txt这个文件
            String filePath="D:/IOFile/news5.txt";
            FileOutputStream fileOutputStream=null;
            try {
                //*当我们使用这个方式去写入数据时,发现新写入的数据会覆盖原来的数据(多次运行,数据都一样,新数据覆盖了旧数据)
         //       fileOutputStream= new FileOutputStream(filePath);
                //*当使用这个方式时,新加入的数据会在原来数据的后面加入(多次运行,原来的数据不会消失,数据会叠加)
                fileOutputStream= new FileOutputStream(filePath,true);
                //1.写入字符串,调用的wirte方法可以写入一个字节数组
                String w="hello,world";
                //这里的getBytes方法就是将字符串转换为字符数组
                fileOutputStream.write(w.getBytes());
    
                //2.调用的wirte方法也可以只写入字符串指定下标的字符
                fileOutputStream.write(w.getBytes(),1,5);//从下标为1开始,写入后面的5个字节
    
                //3.写入一个数据,调用的wirte也可以只写入一个字节
                fileOutputStream.write('!');
    
    
                System.out.println("输出数据成功");
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    fileOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                }
            }
        }
    
    • 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

    FileOutputStream与FileInputStream的使用

    • 文件拷贝
    public class Demo6 {
        public static void main(String[] args) {
    
        }
        @Test
        public void Test(){
            //所需拷贝文件位置
            String fileInputPath="D:/IOFile/news5.txt";
            //文件拷贝到哪
            String fileOutputPath="D:/IOFile/news/news5.txt";
            //因为需要在finally中调用close方法,如果在try中直接定义对象,对象的作用域只在try中所以在try的外面定义
            FileOutputStream fileOutputStream=null;
            FileInputStream fileInputStream=null;
            try {
                fileOutputStream = new FileOutputStream(fileOutputPath);
                fileInputStream = new FileInputStream(fileInputPath);
                byte[] bytes=new byte[128];
                int readlen=0;
                //以数组bytes进行读取,读取返回的是int类型的字节长度,读取内容在bytes数组中
                while((readlen=fileInputStream.read(bytes))!=-1){
                    //然后以数组bytes进行输出,每次输出从下标为0的字节开始,往后输出readlen个字节
                         fileOutputStream.write(bytes,0,readlen);
                }
                System.out.println("文件拷贝正常");
    
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (fileInputStream!=null){
                       fileInputStream.close();
                    }
                    if (fileOutputStream!=null){
                        fileOutputStream.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
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
  • 相关阅读:
    基于Java毕业设计弹幕视频网站源码+系统+mysql+lw文档+部署软件
    网络安全的学习路线是怎么样的?
    oracle数据库核心知识
    SpringBoot2.7.3 动态数据数据源以及多数据源自动配置
    K8S 控制器 service ingress
    Webpack报错Error: error:0308010C:digital envelope routines::unsupported处理
    浅谈‘过早优化’
    【学习笔记】RabbitMQ03:DLX 死信交换机 死信队列 以及示例代码
    看这家造酒厂如何利用低代码开发框架筑牢数据根基,实现数字化转型
    C++11:异常和智能指针
  • 原文地址:https://blog.csdn.net/m0_52051155/article/details/126591016