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

相关推荐
我不是混子12 分钟前
什么是Java 的 Lambda 表达式?
java·后端
小蝙蝠侠23 分钟前
JMeter 执行流程
java·jmeter
程序员小假1 小时前
我们来说一说 ThreadLocal 内存泄漏
java·后端
xq95271 小时前
获取Facebook 散列利器 来了 十六进制到 Base64 转换器
java
我不是混子1 小时前
聊聊Spring事件机制
java·后端
DKPT1 小时前
JVM栈溢出时如何dump栈信息?
java·jvm·笔记·学习·spring
DKPT2 小时前
JVM堆大小如何设置?
java·开发语言·jvm·笔记·学习
铅笔侠_小龙虾2 小时前
JVM 目录
java·jvm
yunxi_052 小时前
让大模型会“说话”:基于 Spring WebSocket 的毫秒级流式 RAG 对话
java·后端
用户6120414922132 小时前
jsp+servlet做的医院挂号看诊管理系统
java·javascript·mysql