11 javaIO流---看看这些关于文件的操作你都懂了么

简介: O流思维导图IO知识点多且复杂,对于后期项目优化有重要作用,弄懂IO流是十分必要的

IO流思维导图


IO知识点多且复杂,对于后期项目优化有重要作用,弄懂IO流是十分必要的

1.jpg

🗂️1 文件


1.1 什么是文件❓


生 活 中:通常指纸质材料,或者官方通知

计算机中: 文件指一个保存数据的空间;比如音频文件、图片文件、视频文件、文本文件这些统称文件。


1.2 什么是文件流❓如何理解流的概念❓


💡答: 在程序中文件是以流的形式来操作的;

流:指文件与程序(内存)之间的经历路径

输入流:数据从外部存储设备到程序(内存)的路径(只能读)

输出流:数据从程序(内存)到外部存储设备的路径(只能写)

输入输出是针对程序本身而言的,指向程序则为输入流,指向文件则为输出流

2.jpg


1.3 流的作用💡


作用1:程序读取文件中的数据

作用2:程序把数据写到文件中


📝2 文件操作


👀2.1 快速了解java File类


在java中提供了文件操作API,我们可以通File类创建对象进而操作文件


拿到File类我们发现它在 java.io包下,不在java.lang包下使用时需要导包

File常用的构造方法如下表:

构造器 说明

File(File parent, String child) 从父抽象路径名和子路径名字符串创建新的 File实例。

File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。

File(String parent, String child) 从父路径名字符串和子路径名字符串创建新的 File实例。

看成员方法;

方法名 说明

String getName() 返回此文件或目录的名称。

注意:【如果没有指定路径,只指定文名的情况下,会在当前项目目录下操作】


🆕2.2 创建文件


🌰案例1—用代码创建文件


public static void main(String[] args) throws IOException {
        System.out.println("-------------方式1-------------------");
//        String filePath = "E:\\aba\\test01.txt";
//        creat02(filePath);
        System.out.println("---------------方式2-----------------");
//        String fileName = "test02.txt";
//        creat01(fileName);
        System.out.println("----------------方式3----------------");
//        String parentName = "E:\\aba\\";
//        String fileNaem = "test03.txt";
//        creat03(parentName,fileNaem);
}
//具体方法实现        
 //第一种方式 File(File parent, String child) 创建文件对象
    public static void creat01(String fileName){
        File parentFile = new File("E:\\aba\\");
        File file = new File(parentFile,fileName);
        try {
            file.createNewFile();
            System.out.println("方式1创建成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //第二种方式 File(String pathname) 创建文件对象
    private static void creat02(String filePath) {
        File file = new File(filePath);
        try {
            file.createNewFile();
            System.out.println("方式2创建成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //第三种方式 File(String parent, String child) 创建文件对象
    private static void creat03(String parentName, String fileNaem) {
        File file = new File(parentName,fileNaem);
        try {
            file.createNewFile();
            System.out.println("第3种方式创建成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


🔍2.3 获取文件相关信息


步骤解析

第一步:创建文件对象

第二步:调用成员方法


🌰案例2— 获取当前文件对象的文件名


File file = new File("E:\\aba\\testaaa.txt");    //创建文件对象
file.createNewFile();        //创建文件
System.out.println("获取文件名:"+file.getName()); //用对象调用成员方法,并输出方法名
System.out.println("获取文件绝对路径:"+file.getAbsolutePath());
System.out.println("获取文件父级目录:"+file.getParent());
System.out.println("获取文件大小(字节):"+file.length());
System.out.println("判断文件是否存在:"+file.exists());
System.out.println("判断是否是一个文件:"+file.isFile());


🗑️2.4 目录操作和文件删除


注意:【目录也是一种特殊形式存在的文件】

mkdir创建一级目录\mkdirs创建多级目录\delete删除空目录或者文件
🌰案例3— 判断E盘aba目录下是否存在testaaa.txt,如果存在删掉
 String filepath = "E:\\aba\\testaaa.txt";    //定义好文件路径
        File file1 = new File(filepath);             //创建文件对象
        if (file1.exists()){                         //判断文件是否存在,再接着往下做
            if (file1.delete()){
                System.out.println(filepath+"删除成功!");
            }else {
                System.out.println(filepath+"删除失败!");
            }
        }else {
            System.out.println("文件不存在!");
        }


🌰案例4—判断e盘下atest目录是否存在,如果存在删除


String documentpath = "E:\\atest";    //定义好文件路径
        File file2 = new File(documentpath);             //创建文件对象
        if (file2.exists()){                         //判断文件是否存在,再接着往下做
            if (file2.delete()){
                System.out.println(documentpath+"删除成功!");
            }else {
                System.out.println(documentpath+"删除失败!");
            }
        }else {
            System.out.println("目录不存在!");
        }


📊3 javaIO流原理及分类


3.1 InputStream的常见子类


子类 说明

FileInputStream 文件字节流输入流

BufferedInputStreanm 缓冲输入流

ObjectInputStream 对象输入流


🌰案例5—FileInputStream读取文件数据

①int read() 从此输入流中读取一个字节的数据。当内容读取结束返回 -1;

//读取E盘下aba目录下test03.txt文件内容
        String str = "E:\\aba\\test03.txt";   
        FileInputStream fileInputStream = new FileInputStream(str);
        int count =0;
        while ((count=fileInputStream.read()) != -1){
            System.out.print((char) count);
        }
        fileInputStream.close();

②int read(byte[] b) 从此输入流 b.length最多 b.length字节的数据读 b.length字节数组。最终读取结束后也会返回-1

String str = "E:\\aba\\test03.txt";
        byte ch [] = new byte[8];
        int cout = 0;
        FileInputStream fileInputStream = new FileInputStream(str);
        while ((cout = fileInputStream.read(ch)) !=-1){
            String st = new String(ch,0,cout);
            System.out.print(st);
        }
        fileInputStream.close();


3.2 OutputStream的常见子类


FileOutputStream | 文件字节流输出流


🌰案例6— 写入文件案例

String filePath = "E:\\aba\\write.txt";   //定义写入路径
 FileOutputStream fileOutputStream = new FileOutputStream(filePath);  //创建文件输出流对象
 fileOutputStream.write("hello,word".getBytes());   //通过write方法写入文件

注意:【此处创建对象时,在文件路径后加true,则写入数据追加在文件原内容之后,不加true这每次执行都会新写】


目录
相关文章
|
6天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
5天前
|
云安全 人工智能 安全
阿里云2026云上安全健康体检正式开启
新年启程,来为云上环境做一次“深度体检”
1612 6
|
2天前
|
消息中间件 人工智能 Kubernetes
阿里云云原生应用平台岗位急招,加入我们,打造 AI 最强基础设施
云原生应用平台作为中国最大云计算公司的基石,现全面转向 AI,打造 AI 时代最强基础设施。寻找热爱技术、具备工程极致追求的架构师、极客与算法专家,共同重构计算、定义未来。杭州、北京、深圳、上海热招中,让我们一起在云端,重构 AI 的未来。
|
2天前
|
存储 人工智能 自然语言处理
OpenSpec技术规范+实例应用
OpenSpec 是面向 AI 智能体的轻量级规范驱动开发框架,通过“提案-审查-实施-归档”工作流,解决 AI 编程中的需求偏移与不可预测性问题。它以机器可读的规范为“单一真相源”,将模糊提示转化为可落地的工程实践,助力开发者高效构建稳定、可审计的生产级系统,实现从“凭感觉聊天”到“按规范开发”的跃迁。
484 11
|
7天前
|
安全 数据可视化 网络安全
安全无小事|阿里云先知众测,为企业筑牢防线
专为企业打造的漏洞信息收集平台
1333 2
|
7天前
|
缓存 算法 关系型数据库
深入浅出分布式 ID 生成方案:从原理到业界主流实现
本文深入探讨分布式ID的生成原理与主流解决方案,解析百度UidGenerator、滴滴TinyID及美团Leaf的核心设计,涵盖Snowflake算法、号段模式与双Buffer优化,助你掌握高并发下全局唯一ID的实现精髓。
361 160
|
7天前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
445 6
n8n:流程自动化、智能化利器
|
8天前
|
人工智能 API 开发工具
Skills比MCP更重要?更省钱的多!Python大佬这观点老金测了一周终于懂了
加我进AI学习群,公众号右下角“联系方式”。文末有老金开源知识库·全免费。本文详解Claude Skills为何比MCP更轻量高效:极简配置、按需加载、省90% token,适合多数场景。MCP仍适用于复杂集成,但日常任务首选Skills。推荐先用SKILL.md解决,再考虑协议。附实测对比与配置建议,助你提升效率,节省精力。关注老金,一起玩转AI工具。
|
15天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
1600 7
|
4天前
|
IDE 开发工具 C语言
【2026最新】VS2026下载安装使用保姆级教程(附安装包+图文步骤)
Visual Studio 2026是微软推出的最新Windows专属IDE,启动更快、内存占用更低,支持C++、Python等开发。推荐免费的Community版,安装简便,适合初学者与个人开发者使用。