当前位置: 首页 > news >正文

【I/O】文件系统操作

目录

一. 文件的概念

二.文件系统

三. File类

(1)构造方法

(2)方法

 (1)获取文件路径 

(2)判断文件状态

(3)创建文件

(4)创建目录

(5)删除文件

(6)列出目录中的文件信息

(7)文件的重命名

(8)文件的移动


一. 文件的概念

对于计算机来说,文件是一个广义的概念,硬盘上的普通文件和目录(文件夹)都可以称为文件,很多硬件设备,也被操作系统抽象成了文件(网卡,显示器等)

文件(File)是数据存储和管理的基本单位,它是存储在存储介质(如硬盘、SSD、U盘等)上的命名数据集合。 

计算机存储设备的比较

存储数据设备速度容量价格数据持久性
CPU (寄存器, 缓存)最快最小最贵丢失
内存其次其次其次丢失
硬盘最慢最大最便宜不丢失

我们常说的文件是存储在硬盘上的文件 ,所以操作文件的很多特性和硬盘的结构有关,由于操作系统(文件系统)对硬件结构细节进行了封装,并提供了一系列API,我们使用时直接调用即可


二. 文件系统

文件系统操作系统用于管理存储设备的一个模块,定义了数据的一系列操作方式,为用户和应用程序提供了统一的文件操作接口。

(1)文件系统通过树形结构组织文件

  •  这里的树不是二叉树,是N叉树
  • 一个普通文件(非目录)就是一个叶子结点
  • 一个目录文件可能包含0个或多个叶子节点

(2) 路径

路径:描述一个文件的具体位置,路径分为绝对路径和相对路径

  • 绝对路径:从根节点出发,一层一层走下去,最终找到目标文件
  • 相对路径:指定一个起点,从起点(当前目录)出发,一层层走下去,最终找到目标文件

举例

  • 一个文件的绝对地址是:C:/User/1/Text.txt
  • 如果当前目录: C:/User/1
  • 那么相对路径: . /Text.txt

注意

. 表示当前目录. . 表示上层目录/ 分隔符,用于分割目录的各个部分

  • 在知道路径的情况下,查找这个文件的过程,不是遍历
  • 在不知道路径的情况下,查找这个文件的过程,是遍历(不重不漏的查看所有文件) 

(3)文件的分类

文件主要分为两类:二进制文件文本文件

  • 文本文件:文件中的内容通过字符编码处理过(ASCII或者UTF-8)
  • 二进制文件:文件中的内容没有限制,任何形式的文件都可以

注意:所有文件本质均为二进制存储 

如何判断文件的类型

 我们可以使用记事本打开,如果为乱码(二进制文件),可以正常阅读(文本文件)

常见的文本文件和二进制文件

 .txt  ,  .c , .java文件都是文本文件

word的.docx 文件,excel的 .xlsx 文件,.pptx都是二进制文件


三. File类

在java中针对文件系统操作,使用File类,此处的文件系统操作指的是创建文件,删除文件,重命名文件等 

File类在java.io包下,此处数据从硬盘到cpu的操作是输入操作 

(1)构造方法

签名说明
File(File parent, Stringchild)根据父目录(File对象)和孩子文件路径,创建一个新的File实例
File(String pathname)根据文件路径创建一个新的File实例,路径可以是绝对路径或相对路径
File(String parent, Stringchild)根据父目录(字符串路径)和孩子文件路径,创建一个新的File实例

 示例:


        File file = new File(new File("D:/1"),"Text_1.txt");

        File file = new File("D:/1/Text_1.txt");

        File file1 = new File("D:/1","Text_1.txt");

在输入文件路径的时候,优先使用相对路径 输入的路径也可以不存在


(2)方法

返回值类型方法说明
StringgetParent()返回File对象的父目录文件路径
StringgetName()返回File对象的文件名称
StringgetPath()返回File对象的文件路径
StringgetAbsolutePath()返回File对象的绝对路径
StringgetCanonicalPath()返回File对象的修饰过的绝对路径(标准路径)
booleanexists()判断File对象描述的文件是否真实存在
booleanisDirectory()判断File对象代表的文件是否是一个目录
booleanisFile()判断File对象代表的文件是否是一个普通文件
booleancreateNewFile()根据File对象,自动创建一个空文件。成功创建后返回true
booleandelete()根据File对象,删除该文件。成功删除后返回true
voiddeleteOnExit()根据File对象,标注文件将被删除,删除动作在代码执行完后进行
String[]list()返回File对象代表的目录下的所有文件名
File[]listFiles()返回File对象代表的目录下的所有文件,以File对象表示
booleanmkdir()创建File对象代表的目录
booleanmkdirs()创建File对象代表的目录,如果必要,会创建中间目录
booleanrenameTo(File dest)进行文件改名,也可以视为我们平时的剪切、粘贴操作
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

  (1)获取文件路径 

import java.io.File;
import java.io.IOException;

//路径获取
public class Demo_1 {
    public static void main(String[] args) throws IOException {
//        File file = new File("D:/1/Text_1.txt");
        File file =new File("./Text_1.txt");

        //获取上一个目录
        System.out.println(file.getParent());
        //获取文件名称
        System.out.println(file.getName());
        //获取路径
        System.out.println(file.getPath());
        //获取绝对路径(先找到上一级目录的绝对路径,在这个基础上找文件路径)
        System.out.println(file.getAbsoluteFile());
        //获取绝对路径
        System.out.println(file.getCanonicalPath());
    }
}

使用相对路径

使用绝对路径

getPath方法:返回的是构造方法中的参数

getAbsoluteFile方法

  • 相对路径:先找到当前路径的绝对地址,再根据相对地址开始找文件(多出来一个 .
  • 绝对路径:正常输出绝对路径的地址

(2)判断文件状态

import java.io.File;
import java.io.IOException;
//文件的创建和删除

public class Demo_2 {
    public static void main(String[] args) throws IOException, InterruptedException {
        File file = new File("./Text_txt");
        //判断是否存在
        System.out.println(file.exists());
        //判断是不是文件
        System.out.println(file.isFile());
        //判断是不是目录
        System.out.println(file.isDirectory());
    }
}

  


(3)创建文件

 如果创建成功则会返回true,反之返回false

        boolean b = file.createNewFile();
        System.out.println("是否创建成功:"+b);
        System.out.println(file.isFile());

(4)创建目录

创建单级目录 

  如果创建成功则会返回true,反之返回false

        File file1 =new File("./aaa");
        boolean b1 = file1.mkdir();
        System.out.println("是否创建成功:"+b1);

创建多级目录 

  如果创建成功则会返回true,反之返回false

        File file2 =new File("./111/222/333");
        boolean b2 = file2.mkdirs();
        System.out.println("是否创建成功:"+b2);

(5)删除文件

直接删除

  如果删除成功则会返回true,反之返回false

        //直接删除
        boolean b1 = file.delete();
        System.out.println("是否删除成功:"+b1);

延迟删除

        file.deleteOnExit();

没有返回值

(6)列出目录中的文件信息

 列出文件名(字符串形式输出)

        File file = new File("./");
        //列出文件和目录信息
        String[] files = file.list();
        System.out.println(Arrays.toString(files));

列出文件对象(文件形式输出)

        File file = new File("./");

        //列出文件和目录信息(以文件格式输出)
        File[] files1 = file.listFiles();
        System.out.println(Arrays.toString(files1));

只有目录才可以列出其中的文件信息,如果是文件,那么会返回null

(7)文件的重命名

        File file = new File("./AAA.txt");
        File file1 = new File("./AAA1.txt");
//创建出file文件
        file.createNewFile();
//重命名
        file.renameTo(file1);

 在重命名之前,保证文件一定存在,本质上移动就是修改文件的路径信息

(8)文件的移动

        File file2 = new File("./AAA2.txt");
        file2.createNewFile();
        File file3 = new File("./aaa/AAA2.txt");
        //移动
        file2.renameTo(file3);

移动和重命名的方法类似,都是在修改路径信息 


点赞的宝子今晚自动触发「躺赢锦鲤」buff! 

相关文章:

  • 2024年第十五届蓝桥杯CC++大学A组--成绩统计
  • 贪心算法:部分背包问题深度解析
  • openwrt软路由配置-----扩展系统空间
  • 【Linux】39.一个基础的HTTP Web服务器
  • 入侵检测系统(IDS)和入侵防御系统(IPS)有啥区别?
  • Linux系统05---进程
  • 安科瑞测频仪表:新能源调频困局的破局者
  • 【AI提示词】常青笔记生成器
  • 鸿蒙开发中的并发与多线程
  • 程序化广告行业(72/89):Tag Manager系统代码操作与行业发展剖析
  • yarn:error Error: certificate has expiredERR_OSSL_EVP_UNSUPPORTED解决
  • 【QT】QT的消息盒子和对话框(自定义对话框)
  • LLC工作模态详解
  • 数据结构与算法-图论-复习1(单源最短路,全源最短路,最小生成树)
  • 突破,未观测地区罕见极端降雨的估计
  • Qt 子项目依赖管理:从原理到实践的最佳分析:depends还是 CONFIG += ordered
  • CVE-2025-24813 漏洞全解析|Apache Tomcat 关键路径绕过与RCE
  • 【AI论文】重新思考预训练中的反思
  • 【ES系列】Elasticsearch简介:为什么需要它?(基础篇)
  • ArcGIS 给大面内小面字段赋值
  • 房产网站建设方案/seo全站优化全案例
  • 灯塔网站建设/友情链接互换网站
  • 有经验的唐山网站建设/网络营销网站建设案例
  • wordpress点击网页效果/排名优化软件点击
  • wordpress博客漏洞/搜索引擎优化的主题
  • 个人可以注册商标吗/十堰seo排名公司