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这样的程序就会通过隐藏文件保存起来。

相关推荐
untE EADO3 分钟前
Tomcat的server.xml配置详解
xml·java·tomcat
ictI CABL12 分钟前
Tomcat 乱码问题彻底解决
java·tomcat
敖正炀15 分钟前
DelayQueue 详解
java
敖正炀41 分钟前
PriorityBlockingQueue 详解
java
shark22222221 小时前
Spring 的三种注入方式?
java·数据库·spring
陈煜的博客1 小时前
idea 项目只编译不打包,跳过测试,快速开发
java·ide·intellij-idea
JAVA学习通1 小时前
LangChain4j 与 Spring AI 的技术选型深度对比:2026 年 Java AI 工程化实践指南
java·人工智能·spring
.柒宇.1 小时前
Java八股之反射
java·开发语言
敖正炀1 小时前
LinkedTransferQueue 详解
java
环流_2 小时前
多线程1(面试题--常见的线程创建方式)
java·开发语言·面试