<JavaEE> 文件IO -- File类和文件操作

目录

一、文件的概念

二、文件系统

三、文件类型

[四、使用 File 类进行文件操作](#四、使用 File 类进行文件操作)

[4.1 File 类中的 pathSeparator 属性](#4.1 File 类中的 pathSeparator 属性)

[4.2 File 类构造方法](#4.2 File 类构造方法)

[4.3 File 类常用方法](#4.3 File 类常用方法)


一、文件的概念

|-----------------------------------------------------------------------|
| 什么是文件? |
| 广义上的"文件"是指抽象化的操作系统中的硬件设备和软件资源,目的是对这些"文件"进行同一的管理。 |
| 狭义上的"文件(FIle)"则只是指在硬件设备中保存的数据,这些数据往往以一个一个的单位进行保存,每一个独立的单位就称为"文件"。 |


二、文件系统

|---------------------------------------------------|
| 1)什么是文件系统? |
| 是一个"树形结构"实现的系统,用于组织管理文件。 |
| 操作系统通过"目录"对文件进行组织管理。利用目录的层次结构来描述文件所在位置,即"路径"。 |
| 由于"树形结构"的特点,每个文件都会有自己的唯一路径。通过路径,就可以找到文件。 |

|----------|------------------------------------------------------------------------------------------------|
| 2)绝对路径和相对路径 ||
| 绝对路径 | 从"树形结构"的根节点开始描述,一直到叶子节点(即文件),这样的描述方式称为文件的"绝对路径"(absolute path)。在windows系统中,绝对路径从盘符开始描述。 |
| 相对路径 | 从指定的任意节点出发,该节点被称为"基准目录"。以该节点为基准,对文件进行描述,这样的描述方式称为"相对路径"(relative path)。想要得到相对路径,必须先明确基准目录。 |

|--------|--------------------------|
| 3)相对路径的两个符号 ||
| . | " . "号表示当前目录。 |
| .. | " .. "号表示当前目录的上一级目录。 |

|------------------------------------------------------------------------------------------------------|
| 4)表示相对路径的示例 |
| 基准目录:D:/Test/A/ 相对路径(当前目录下的test1.txt文件):./test1.txt 相对路径(上级目录下,B文件夹中的test2.txt文件):../B/test2/txt |


三、文件类型

|-----------|--------------------------------------------------------------|
| 有哪些文件类型? ||
| 文本文件 | 文本文件是指保存合法字符的文件,字符以字符串形式保存。合法字符是指被字符集编码的文本,如"UTF-8"等字符集。 |
| 二进制文件 | 二进制文件是指文件保存的是二进制数据。 |


四、使用 File 类进行文件操作

|------------|---------------------------------------|
| 在 Java 中,文件的操作分为两类 ||
| 操作文件系统 | 通过 File 类,在系统中进行增、删、查等操作。(下文介绍该类) |
| 操作文件内容 | 通过 流对象,在文件中读取或写入内容。 |

4.1 File 类中的 pathSeparator 属性

|----------------------------------------------------------------------------------------|
| pathSeparator 属性是什么? |
| 不同的操作系统使用"/"或"\"作为目录分隔符,为使两种情况都能被成功识别,File 中 使用了 pathSeparator 属性来对这两个符号做自适应。 |

4.2 File 类构造方法

|----------------------------------------------|---------------------------------------|
| File 类中常用的构造方法有以下三种 ||
| public File(File parent, String child) | 根据父目录和子路径,创建新的 File 实例。 |
| public File(String pathname) | 根据文件路径,创建新的 File 实例。路径可以是绝对或相对路径。 |
| public File(String parent, String child) | 根据父目录和子路径,创建新的 File 实例。 |

4.3 File 类常用方法

|----------------------------------------|-------------------------------|
| File 类中有以下常用的方法 ||
| public String getParent() | 返回 File 对象的父目录 |
| public String getName() | 返回 File 对象的文件名 |
| public String getPath() | 返回 File 对象的文件路径 |
| public String getAbsolutePath() | 返回 File 对象的绝对路径 |
| public String getCanonicalPath() | 返回 File 对象,修饰过的绝对路径 |
| public boolean exists() | 判断 File 对象是否真实存在 |
| public boolean isDirectory() | 判断 File 对象是否为目录 |
| public boolean isFile() | 判断 File 对象是否为文件 |
| public boolean createNewFile() | 创建新的 File 对象 |
| public boolean delete() | 删除 File 对象 |
| public void deleteOnExit() | 在进程结束后,删除 File 对象 |
| public String[] list() | 返回 File 对象目录下的所有文件名 |
| public File[] listFiles() | 返回 File 对象目录下的所有文件名 |
| public boolean mkdirs() | 创建 File 对象的目录,包括中间目录 |
| public boolean renameTo(File dest) | 修改文件名、文件路径;修改文件路径与剪切粘贴类似; |
| public boolean canRead() | 判断是否对文件有可读权限 |
| public boolean canWrite() | 判断是否对文件有可写权限 |

++代码演示 getAbsolutePath() 和 getCanonicalPath() :++

java 复制代码
    //文件的基准目录是"C:/Test/A"。
    public static void main(String[] args) throws IOException {
        File file = new File("./test.txt");
        System.out.println("AbsolutePath-> "+file.getAbsolutePath());
        System.out.println("CanonicalPath-> "+file.getCanonicalPath());
    }

//运行结果:
AbsolutePath-> C:\Test\A\.\test.txt
CanonicalPath-> C:\Test\A\test.txt

可以看出AbsolutePath就是父目录和相对路径的字符串连接。
而CanonicalPath则是经过了修饰处理的。

++代码演示 exists()、isDirectory()、isFile() 和 createNewFile() :++

java 复制代码
    public static void main(String[] args){
        File file = new File("C:/Test/A/test.txt");
        
        System.out.println("文件是否存在:" + file.exists());
        System.out.println("这是一个目录:" + file.isDirectory());
        System.out.println("这是一个文件:" + file.isFile());

        System.out.println("创建新文件:" + file.createNewFile());
    }


//运行结果:
文件是否存在:false
这是一个目录:false
这是一个文件:true
创建新文件:true

可以看出,使用 File 构造方法时,传入的文件路径并不一定需要真实存在。
通过 exists() 可以判断文件是否真实存在。
通过 createNewFile() 可以创建出一个新文件,文件的路径与构造方法的参数相同。

++代码演示 list() 和 listFiles() :++

java 复制代码
//目录"C:/Test"中,存在文件夹"A"、文件夹"B"和文件"Test.txt"。

    public static void main(String[] args){
        File f = new File("D:/Learn/E-JavaEE");

        File[] files = f.listFiles();
        for (File file : files){
            System.out.println(file.getName());
        }
    }

//运行结果:
Test.txt
A
B

list() 和 listFiles() 用法相同,只是返回值不同。
list() 返回字符串数组。
listFiles() 返回文件数组。

++代码演示 renameTo() :++

java 复制代码
    public static void main6(String[] args) throws IOException {
        File src = new File("D:/Test/A/test.txt");
        File dest = new File("D:/Test/B/test1.txt");
        System.out.println("重命名:" + src.renameTo(dest)); 
    }

//运行结果:
重命名:true

可以看到,虽然方法名称为"重命名",但是重命的可以不只是名,还可以是目录。
这就达成了剪切粘贴的效果。

阅读指针 -> 《文件IO -- 流对象操作文件内容》

链接生成中..........

相关推荐
Theodore_102210 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
LIT-涛1 天前
JavaEE初学07
数据库·oracle·java-ee
&梧桐树夏1 天前
JavaEE 线程安全
java-ee·多线程
界面开发小八哥1 天前
「Java EE开发指南」如何使用Visual JSF编辑器设计JSP?(一)
java·ide·java-ee·编辑器·myeclipse
先睡1 天前
javaEE
java·java-ee
冷心笑看丽美人1 天前
Spring 框架七大模块(Java EE 学习笔记03)
学习·spring·架构·java-ee
郑祎亦1 天前
JavaWeb开发:HTML 页面与接口对接
前端·后端·java-ee·html
Theodore_10222 天前
7 设计模式原则之合成复用原则
java·开发语言·jvm·设计模式·java-ee·合成复用原则
customer082 天前
【开源免费】基于SpringBoot+Vue.JS网上订餐系统(JAVA毕业设计)
java·jvm·vue.js·spring boot·spring cloud·java-ee·开源
Theodore_10223 天前
6 设计模式原则之单一职责原则
java·算法·设计模式·面试·java-ee·javaee·单一职责原则