<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 -- 流对象操作文件内容》

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

相关推荐
XiaoLeisj8 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
尢词12 小时前
SpringMVC
java·spring·java-ee·tomcat·maven
阑梦清川15 小时前
JavaEE进阶---第一个SprintBoot项目创建过程&&&我的感受
java·java-ee·springboot
移民找老国16 小时前
加拿大移民新风向
java-ee·maven·phpstorm·visual studio code·nio
琪露诺大湿17 小时前
JavaEE-多线程初阶(4)
java·开发语言·jvm·java-ee·基础·1024程序员节·原神
细心的莽夫21 小时前
JavaWeb学习笔记
java·开发语言·笔记·学习·java-ee·web
yang_shengy2 天前
【JavaEE】认识进程
java·开发语言·java-ee·进程
听潮阁3 天前
【SpringCloud详细教程】-01-一文了解微服务
开发语言·spring boot·spring cloud·servlet·java-ee·mybatis