输入输出(I/0)流

news2024/9/22 15:43:38

一、 File: 是所有文件或者文件夹的路径抽象表现形式

file自动重写了toString方法,所以直接打印显示的是file内容

    构造方法:
        public File(String pathname)
        public File(String parent,String child)
        public File(File parent,String child)

参考用法:

public class FileDemo1 {
    public static void main(String[] args) {
        // 将未来要操作的路径封装成File对象
        /*
            路径:
                绝对路径(完整路径):指的是带有盘符的路径【在windows】
                    举例:D:\projects\IDEAProjects\bigdata31-java\src\day16\data\a.txt
                相对路径:相对于该项目而言,将该项目作为开始
                    举例:src/day16/data/a.txt

         */
        //public File(String pathname)
        File file = new File("D:\\projects\\IDEAProjects\\bigdata31-java\\src\\day16\\data\\a.txt");
        System.out.println(file);
        File file2 = new File("src/com/shujia/day16/data/a.txt");
        System.out.println(file2);

        //public File(String parent,String child)
        File file3 = new File("D:\\projects\\IDEAProjects\\bigdata31-java\\src\\day16\\data","a.txt");
        System.out.println(file3);

        //public File(File parent,String child)
        File file4 = new File(new File("D:\\projects\\IDEAProjects\\bigdata31-java\\src\\day16\\data"),"a.txt");
        System.out.println(file4);



    }
}

File类中的成员方法如下:

       创建功能
            public boolean createNewFile()
            public boolean mkdir()
            public boolean mkdirs()
        删除功能
            public boolean delete()
        重命名功能
            public boolean renameTo(File dest)

参考用法:

public class FileDemo2 {
    public static void main(String[] args) throws Exception{
        //D:\bigdata31\day16\shujia.txt
        File file = new File("D:\\bigdata31\\day16\\shujia.txt");

        //public boolean createNewFile() 创建一个文件 若文件已经存在,返回false,否则创建文件返回true
        System.out.println(file.createNewFile());

        //public boolean mkdir() 创建单级目录
        File file1 = new File("D:\\bigdata31\\day16\\aaa\\bbb\\ccc");
       System.out.println(file1.mkdir());
        System.out.println(file1.createNewFile());
        System.out.println(file1.mkdir());

        //public boolean mkdirs() 创建多级目录
        System.out.println(file1.mkdirs());

        // public boolean delete() 既可以删除某一个文件也可以删除单级文件夹
        File file2 = new File("D:\\bigdata31\\day16\\bbb");
        System.out.println(file2.delete());

        File file3 = new File("D:\\bigdata31\\day16\\aaa");
        System.out.println(file3.delete());

        //public boolean renameTo(File dest) 对文件或者文件夹重命名
        File file4 = new File("D:\\bigdata31\\day16\\小小.txt");
        System.out.println(file.renameTo(file4));

    }
}
 判断功能
        public boolean isDirectory()  是否是文件夹
        public boolean isFile()          是否是文件
        public boolean exists()         是否存在
        public boolean canRead()    是否可读
        public boolean canWrite()   是否可写
        public boolean isHidden()   是否被隐藏

 

参考用法:

public class FileDemo3 {
    public static void main(String[] args) {
        File file4 = new File("D:\\bigdata31\\day16\\魏一民.txt");

        //public boolean isDirectory() 是否是文件夹
        System.out.println(file4.isDirectory());

        //public boolean isFile() 是否是文件
        System.out.println(file4.isFile());

        //public boolean exists() 是否存在
        System.out.println(file4.exists());

        //public boolean canRead() 是否可读
        System.out.println(file4.canRead());

        //public boolean canWrite() 是否可写
        System.out.println(file4.canWrite());

        //public boolean isHidden() 是否被隐藏
        System.out.println(file4.isHidden());
    }
}
 基本获取功能
        public String getAbsolutePath() 获取完整路径
        public String getPath()                获取相对路径
        public String getName()              获取文件或者文件夹的名字
        public long length()                     获取文件内容字节数
        public long lastModified()           最近一次修改时间 获取的是毫秒级别的时间戳

参考如下:

public class FileDemo4 {
    public static void main(String[] args) {
        File file = new File("src/com/shujia/day16/data/a.txt");

        System.out.println(file.getAbsolutePath()); // 获取完整路径

        System.out.println(file.getPath()); // 获取相对路径

        System.out.println(file.getName()); // 获取文件或者文件夹的名字

        System.out.println(file.length()); // 获取文件内容字节数

        File file1 = new File("D:\\bigdata31\\day16\\哈哈.txt");
        long l = file1.lastModified(); // 最近一次修改时间 获取的是毫秒级别的时间戳
        Date date = new Date(l);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日,  HH:mm:ss");
        String time = simpleDateFormat.format(date);
        System.out.println("上一次修改时间:"+time);

    }
}
 高级获取功能
        public String[] list()     列出当前目录下所有的文件及文件夹的名称,组成的数组
        public File[] listFiles() 列出当前目录下所有的文件及文件夹的File对象

参考如下:

public class FileDemo5 {
    public static void main(String[] args) {
        File file = new File("src/com/shujia/day16");


        //public String[] list() 列出当前目录下所有的文件及文件夹的名称,组成的数组
        String[] names = file.list();
        System.out.println(Arrays.toString(names));

        System.out.println("--------------------------");
        //public File[] listFiles() 列出当前目录下所有的文件及文件夹的File对象
        File[] files = file.listFiles();

        // 断言
        assert files!=null;

       for (File file1 : files) {
            System.out.println(file1);
        }

        if(files!=null){
            for (File file1 : files) {
                System.out.println(file1);
            }
        }
    }
}

 二、 字节输入流:FileInputStream

构造方法:
        FileInputStream(File file)
        FileInputStream(String name)

参考使用:

public class FileInputStreamDemo1 {
    public static void main(String[] args) throws Exception{
        //FileInputStream(File file) 将要进行读取的文件封装成File对象放入到构造方法
        //输入必须要求目标文件要已经存在,不然报错
       File file = new File("src/day16/data/a3.txt");
      FileInputStream fis = new FileInputStream(file);

        //FileInputStream(String name)
        FileInputStream fis = new FileInputStream("src/day16/data/a3.txt");


        fis.close();
    }
}

 FileInputStream读数据的方法:
        public int read()
        public int read(byte[] b)

参考使用:

public class FileInputStreamDemo2 {
    public static void main(String[] args) throws Exception {
        //创建字节输入流对象
        FileInputStream fis = new FileInputStream("src/com/shujia/day16/data/a3.txt");

        //public int read() // 一次只读取一个字节
        System.out.println((char) fis.read());
       System.out.println((char) fis.read());
        System.out.println((char) fis.read());
       System.out.println((char) fis.read());
       System.out.println(fis.read());
       int i = 0;
        while ((i = fis.read()) != -1) {
          System.out.print((char) i);
     }

        //public int read(byte[] b)
        //创建一个字节数组
        byte[] bytes = new byte[1024];
        int length = fis.read(bytes); // 返回的是实际读取到的字节数
        //字节数组转字符串
        String s = new String(bytes,0,length);
        System.out.println(s);

        byte[] bytes = new byte[2];
       //第一次读
       int length = fis.read(bytes); // 返回的是实际读取到的字节数
        //字节数组转字符串
        String s = new String(bytes,0,length);
        System.out.print(s);

        //第二次读
        int length2 = fis.read(bytes); // 返回的是实际读取到的字节数
        //字节数组转字符串
        String s2 = new String(bytes,0,length2);
       System.out.print(s2);
        //第三次读
       int length3 = fis.read(bytes); // 返回的是实际读取到的字节数
        //字节数组转字符串
       String s3 = new String(bytes,0,length3);
       System.out.print(s3);

        //使用while循环读取
        byte[] bytes = new byte[1024];
        int length = 0;
        while ((length = fis.read(bytes)) != -1) {
            String s = new String(bytes, 0, length);
            System.out.print(s);
        }


        //释放资源
        fis.close();
    }
}

 三、 字节输出流:FileOutputStream

FileOutputStream:
        构造方法:
            FileOutputStream(File file)
            FileOutputStream(String name)

参考方法:

public class FileOutputStreamDemo1 {
    public static void main(String[] args) throws Exception{
        //FileOutputStream(File file) 需要先将目标文件封装成一个File对象放入到构造方法
//        File file = new File("src/day16/data/a2.txt");
//        //若写入的目标文件不存在的话,会自动创建一个
//        FileOutputStream fos = new FileOutputStream(file);

        //FileOutputStream(String name)
        FileOutputStream fos = new FileOutputStream("src/day16/data/a2.txt");
        System.out.println(fos);


    }
}

 FileOutputStream写数据的方法:

    public void write(int b)
    public void write(byte[] b)
    public void write(byte[] b,int off,int len)

参考使用:

public class FileOutputStreamDemo2 {
    public static void main(String[] args) {
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream("src/com/shujia/day16/data/a3.txt");

            //public void write(int b)
            //写一个字节
//             fos.write(97);
//             fos.write(98);
//             fos.write(99);
//             fos.write(100);

            //public void write(byte[] b) // 一次写一个字节数组
            byte[] bytes = {97, 98, 99, 100, 101, 102, 103};
//            fos.write(bytes);

            //public void write(byte[] b,int off,int len) 一次写字节数组的一部分
            fos.write(bytes,2,3);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //释放写数据资源
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
        1、怎么实现追加写?
        2、怎么实现换行?

参考使用:

public class FileOutputStreamDemo3 {
    public static void main(String[] args) throws Exception {
        //若文件已经存在,会将文件中的内容清空,若想要实现追加,在传入路径之后,append属性给true
        FileOutputStream fos = new FileOutputStream("src/com/shujia/day16/data/a3.txt",true);

        fos.write("\r\n".getBytes());

        fos.write(110);
        fos.write(111);
        fos.write(112);



        fos.close();

        //释放资源之后无法再继续使用了
//        fos.write(113);


    }
}

四、缓冲(字节)输入输出流:

缓冲(字节)输入流:BufferedInputStream

创建对象的方式:BufferedInputStream bis = new BufferedInputStream(new FIleInputStream("路径"))

特点:

缓冲(字节)输出流:BufferedOutputStream

创建对象的方式:  BufferedOutputStream bos = new BufferedOutputStream(new   FileOutputStream("路径"))

特点:

五、字符输入和输出流

抽象父类:(输入父类)Reader、(输出父类)Writer

字符输入流的具体实现子类和用法:

字符输入流:InputStreamReder

字符缓冲(输入)流的具体实现子类和用法:

缓冲流:BufferedReder

字符输出流的具体实现子类和用法:

字符输出流:InputStreamWriter

注意:简化版后的字符缓冲输出流,就不能添加或设定字符集,有没有append属性来添加true

缓冲流:BufferedWriter

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2048504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rust操作rabbitmq

Rust 操作 Rabbitmq 使用docker快速部署rabbitmq docker pull rabbitmq:management # 15672为rabbitmq 管理员端口,默认账号密码为guest(账号密码相同) docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:managementrust 添加amqp库lapin car…

影院订票系统/电影院售票系统/电影院购票系统的设计与实现/影院管理系统

摘 要 “互联网”的战略实施后,很多行业的信息化水平都有了很大的提升。但是目前很多电影院日常业务仍是通过人工管理的方式进行,需要在影院订票投入大量的人力进行很多重复性工作,这样就浪费了许多的人力物力,工作效率较低&…

【Godot4自学手册】第四十五节用着色器(shader)制作水中效果

本节内容,主要学习利用着色器制作水波纹效果,效果如下: 一、搭建新的场景 首先我们新建场景,根节点选择Node2D,命名为Water,给根节点添加两个Tilemap节点,一个命名为Background主要用于绘制地…

JUC介绍

一、并发与并行 1.并发 早期计算机CPU是单核的,为了提高CPU的利用率,减少等待时间,使用到了并发工作的理论 并发就是将CPU资源合理分配给多个任务,当一个任务执行I/O操作时,转去执行其他任务 2.并行 针对多核CPU&…

25届科大讯飞飞星计划 AI研究算法工程师 面经

目录 一面/技术面 2024/08/15 📋 总结: 本来应该是在7月底面试的,但因为有事就拖到了现在,或许是飞星计划里最晚面试的一批?面试官很和蔼,问的问题不算难,总体体验还算不错。 一面/技术面 2024/…

MySQL基础--逻辑存储结构,架构

逻辑存储结构 表空间(ibd 文件):一个 mysql 实例可以对应多个表空间,用于存储记录,索引等数据。 段:分为数据段,索引段,回滚段,InnoDB 是索引组织表,数据段就…

Unity引擎基础知识

目录 Unity基础知识概要 1. 创建工程 2. 工程目录介绍 3. Unity界面和五大面板 4. 游戏物体创建与操作 5. 场景和层管理 6. 组件系统 7. 脚本语言C# 8. 物理引擎和UI系统 学习资源推荐 Unity引擎中如何优化大型游戏项目的性能? Unity C#脚本语言的高级编…

修复 iPad 卡在准备更新或正在进行更新的问题

为什么iPad 更新卡住了?原因很难确定,因为 iPad 的许多故障和状况都可能导致 iPad 无法更新 iOS 和应用程序。此外,很难弄清楚这种情况持续了多长时间。但是,您不必太担心,因为这只是一个小案例,您可以阅读…

Java入门(上)

day01 - Java基础语法 1. 人机交互 1.1 什么是cmd? 就是在windows操作系统中,利用命令行的方式去操作计算机。 我们可以利用cmd命令去操作计算机,比如:打开文件,打开文件夹,创建文件夹等。 1.2 如何打…

单元训练13:串行接口的进阶应用

蓝桥杯,小蜜蜂,单元训练13:串行接口的进阶应用 /** Description:* Author: fdzhang* Email: zfdcqq.com* Date: 2024-08-17 15:41:34* LastEditTime: 2024-08-17 19:48:35* LastEditors: fdzhang*/ #include "stc15f2k60s2.h"#defi…

算法工程师第四十天(647. 回文子串 516.最长回文子序列 动态规划总结篇 )

参考文献 代码随想录 一、回文子串 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 示例 1: 输入:s "abc"…

MySQL 异步主从复制流程解析

前言: 首先MySQL主从复制方式有多种,包括 binlog、GTID等,这里基于 binlog 的形式,解析异步主从复制流程 首先通过下面命令查看全部 binlog 日志文件 show binary logs; binlog 日志文件如下: 然后查看其中一个文件…

ECMAScript6语法:默认参数和rest参数

1、默认参数 默认参数即在定义函数的参数列表中指定了默认值的参数。在 ES5 中,并没有提供在参数列表中指定参数默认值的语法,要想为函数的参数指定默认值,只能在函数体中实现,示例代码如下: function table(width, …

MBR10200FCT-ASEMI智能AI专用MBR10200FCT

编辑:ll MBR10200FCT-ASEMI智能AI专用MBR10200FCT 型号:MBR10200FCT 品牌:ASEMI 封装:TO-220F 批号:最新 最大平均正向电流(IF):10A 最大循环峰值反向电压(VRRM&a…

西安旅游系统--论文pf

TOC springboot383西安旅游系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域的鸿…

YOLOv8侦测任务更换主干网络成MobileNetV3

目录 1. 添加主干网络模块 ​编辑1.1 在init.py中添加模块名 1.2 主体代码中添加调用语句块 2. 配置yaml文件 3. 修改成功 1. 添加主干网络模块 1.1 在init.py中添加模块名 1.2 主体代码中添加调用语句块 2. 配置yaml文件 3. 修改成功 自己随便找一个程序跑一跑验证…

微电网控制器是什么?微电网中央控制器|微电网协调控制器|微电网控制系统图|Micon2505微网中央控制器方案介绍

微电网控制器是什么?微电网中央控制器|微电网协调控制器|微电网控制系统图|Micon2505微网中央控制器方案介绍及其在油田采油机场景中的应用。微电网控制器广泛应用于具备光伏,储能,V2G,充电桩,风电,柴油发电…

图解内存分配算法 -- 小内存分配算法

图解内存分配算法 – 小内存分配算法 文章目录 图解内存分配算法 -- 小内存分配算法1. 算法介绍2. 算法图解2.1 约定2.2 数据结构介绍2.3 初始化2.4 第一次 malloc 40字节2.5 第二次 malloc 18 字节2.6 第三次 malloc 20字节2.7 第四次 malloc 40字节2.8 第一次 free2.9 第二次…

LINUX服务器部署准备

文章目录 配置环境变量NODE下载解压安装 NGINX下载NGINX下载GCC并安装解压安装启动NGINX MAVEN下载解压安装配置环境 TOMCAT下载兼容版本解压安装开启远程访问 REDIS下载解压安装配置远程使用关闭保护模式 配置环境变量 vi /etc/profile source /etc/profile解压成功之后、运行…

安装IDEA2021.2.1(含安装包)及其扩展设置

一、下载 通过百度网盘分享的文件:ideaIU-2021.2.1.exe 链接:https://pan.baidu.com/s/1cCUHNm0dpWlfkxf5RCEgfw 提取码:v62e 二、安装 安装视频网址:Java基础概念-12-idea的概述和下载安装_哔哩哔哩_bilibili 三、idea中的第一…