JavaEE 初阶第十五期:文件 IO 的 “管道艺术”(上)

专栏:JavaEE初阶起飞计划

个人主页:手握风云

目录

一、文件基础

[1.1. 文件概念](#1.1. 文件概念)

[1.2. 文件路径](#1.2. 文件路径)

[1.3. 文件的类型](#1.3. 文件的类型)

二、Java文件操作

[2.1. File概述](#2.1. File概述)


一、文件基础

1.1. 文件概念

我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。文件除了有数据内容之外,还有一部分信息,例如文件名、文件类型、文件大小等并不作为文件的数据而存在,我们把这部分信息可以视为文件的元信息。

我们要知道,文件在计算机中,是保存在硬盘上的。我们在编程的时候,是不会直接操作硬盘的,而是通过"文件"这样的概念间接进行的。

对于文件的管理,是通过文件资源管理器管理的,通过类似于"树形结构"来组织管理。

1.2. 文件路径

在计算机文件系统中,文件路径是用于标识文件或目录在存储介质中具体位置的字符串,它像 "地址" 一样,告诉操作系统或程序如何找到目标文件。

绝对路径:从文件系统的根目录开始,完整描述文件位置的路径,是 "全量地址"。例如在Windows系统中"D:\data-structure\Test1.12.1\src\Solution.java",就是平时储存数据结构的代码。

相对路径:从当前工作目录(程序运行时的默认目录)出发,描述文件位置的路径,是 "相对地址"。.:表示当前目录(可省略);..:表示上一级目录。谈到相对路径,一定要明白相对路径的参考系是啥。

在实际开发中,绝对路径和相对路径都会经常用到,尤其是相对路径,用到会更多一些。

1.3. 文件的类型

所有的文件都可以分为2大类:文本文件和二进制文件。文本文件存的都是字符串,也就是"合法的字符",例如.txt、.java、.cpp文件。二进制文件存什么都可以。用简单的方式判断为哪种类型的文件,用notepad的方式打开,查看是否乱码。

二、Java文件操作

2.1. File概述

Java中通过java.io.File类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。注意,有File对象,并不代表真实存在该⽂件。

  • 属性

在 Java 中,File类的属性主要用于表示系统相关的路径分隔符,具体如下:

|---------------|---------------|-------------------------|
| 修饰符及类型 | 属性 | 说明 |
| static String | pathSeparator | 依赖于系统的路径分隔符,String的类型表示 |
| static char | pathSeparator | 依赖于系统的路径分隔符,char的类型表示 |

  • 构造方法

|-----------------------------------|------------------------------------|
| 签名 | 说明 |
| File(File parent, String child) | 根据父目录与孩子文件路径,创建一个新的File实例 |
| File(String pathname) | 根据文件路径创建一个新的File实例,路径可以是绝对路径或者相对路径 |
| File(String parent, String child) | 根据父目录与孩子文件路径,创建一个新的File实例,父目录用路径表示 |

  • 方法
java 复制代码
import java.io.File;
import java.io.IOException;

public class Demo1 {
    public static void main(String[] args) throws IOException {
        File file = new File("./test.txt");

        System.out.println(file.getParent());// 返回File对象的⽗⽬录⽂件路径
        System.out.println(file.getName());// 返回File对象的纯⽂件名称
        System.out.println(file.getPath());// 返回File对象的文件路径
        System.out.println(file.getAbsoluteFile());// 返回File对象的绝对路径
        System.out.println(file.getCanonicalPath());// 返回File对象修饰过的绝对路径,还有一个异常需要处理
    }
}
java 复制代码
import java.io.File;

public class Demo2 {
    public static void main(String[] args) {
        File file = new File("d:/test.txt");

        System.out.println(file.exists());// 判断文件是否存在
        System.out.println(file.isDirectory()); // 判断是否是目录
        System.out.println(file.isFile()); // 判断是否是文件
    }
}
java 复制代码
import java.io.File;
import java.io.IOException;

public class Demo3 {
    public static void main(String[] args) throws IOException {
        File file = new File("./test.txt");

        file.createNewFile(); // 创建文件
        file.delete(); // 删除文件
    }
}
java 复制代码
import java.io.File;
import java.io.IOException;
import java.util.Scanner;

public class Demo3 {
    public static void main(String[] args) throws IOException {
        File file = new File("./test.txt");

        file.createNewFile(); // 创建文件
        System.out.println("文件创建成功");
        file.deleteOnExit(); // 程序退出时删除文件
        System.out.println("使用deleteOneExit");
//        file.delete(); // 删除文件
        Scanner in = new Scanner(System.in);
        System.out.println("输入任意内容,退出程序");
        in.next();
    }
}

上面这个代码的作用:我们在使用Office这些办公软件时,当我们编辑这些文档时,会出现一个隐藏文件,关闭的时候就会消失。特别是当电脑突然关机时,未保存的内容没有写到硬盘上就会消失。Office这样的程序就会通过隐藏文件保存起来。

相关推荐
北京_宏哥8 分钟前
《刚刚问世》系列初窥篇-Java+Playwright自动化测试-33-JavaScript的调用执行-上篇 (详细教程)
java·前端·javascript
自由的疯9 分钟前
java程序员怎么从Python小白变成Python大拿?(七)
java·后端·trae
风的归宿5511 分钟前
log4j2异步模式源码解析
java·后端
种子q_q1 小时前
Java中的代理模式
java·后端·面试
桦说编程1 小时前
一文帮你掌握集合类库常见工具方法
java·后端·性能优化
二狗哈1 小时前
制作一款打飞机游戏87:最后冲刺
java·前端·游戏
Chesnut.1 小时前
【2025.08.06最新版】Android Studio下载、安装及配置记录(自动下载sdk)
android·java
jackson凌2 小时前
IDEA快捷键壁纸分享
java·ide·intellij-idea
静谧之心2 小时前
分层架构下的跨层通信:接口抽象如何解决反向调用
java·开发语言·设计模式·架构·golang·k8s·解耦
摸鱼一级选手2 小时前
Java 集合框架深层原理:不止于 “增删改查”
java·开发语言·后端