【JavaEE】文件操作

在这里插入图片描述

文章目录

  • 前言
  • 什么是文件
  • 树型结构组织和目录
  • 文件路径
  • 文件类型
  • 文件权限
  • Java中的文件操作
    • File 类的常见属性
    • File 类常见构造方法
    • File 类常用方法

前言

文件是我们日常生活中使用非常广泛的,我们使用任何一个程序都离不开文件操作,这个文件不仅仅指平时可以看见的文件,就连我们的键盘和屏幕都可以看作是一个文件。可见文件操作的重要性,那么今天我将为大家分享关于Java 的文件操作。
在这里插入图片描述

什么是文件

我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。

文件除了有数据内容之外,还有一部分信息,例如文件名、文件类型、文件大小等并不作为文件的数据而存在,我们把这部分信息可以视为文件的元信息。
在这里插入图片描述
在这里插入图片描述

树型结构组织和目录

在Linux中,文件系统的组织结构采用树形结构,也称为层级目录结构。整个文件系统只有一个根目录(/),所有的文件和目录都从根目录开始进行组织和管理。根目录下面可以有多个子目录,每个子目录又可以包含其他子目录和文件,这样就形成了一个树形的结构。

目录是用于组织和存储文件的容器,也可以理解为文件夹。目录可以包含其他目录和文件,从而形成了树形结构。在Linux中,所有的目录和文件都可以通过路径来唯一标识和查找。路径是从根目录开始,一直到具体文件或目录的完整路径。例如,路径“/home/user/Documents/file.txt”表示从根目录开始,进入home目录,再进入user目录,然后进入Documents目录,最后找到名为file.txt的文件。

Windows的文件系统也采用了类似的树形结构,称为文件夹树。每个磁盘分区或驱动器都有自己的根目录,称为根文件夹。根文件夹下面可以有多个子文件夹,每个子文件夹又可以包含其他子文件夹和文件,形成了一个树形的结构。

在这里插入图片描述

文件路径

文件路径是指在计算机文件系统中,从根目录开始到具体文件或目录的完整路径。文件路径用于唯一标识和查找文件或目录。

在Linux中,文件路径以斜杠(/)作为分隔符,从根目录开始一直到具体文件或目录。例如,路径“/home/user/Documents/file.txt”表示从根目录开始,进入home目录,再进入user目录,然后进入Documents目录,最后找到名为file.txt的文件。

在Windows中,文件路径以反斜杠(\)或正斜杠(/)作为分隔符,从根文件夹开始一直到具体文件或文件夹。例如,路径“C:\Users\UserName\Documents\file.txt”表示从C盘根文件夹开始,进入Users文件夹,再进入UserName文件夹,然后进入Documents文件夹,最后找到名为file.txt的文件。

虽然Windows下可以使用 \/ 作为分隔符,但是我们还是习惯使用 / ,因为使用 \ 的话,有些情况下还需要做出转义操作。

文件路径可以分为绝对路径和相对路径。

  • 绝对路径是从根目录或根文件夹开始到具体文件或目录的完整路径
  • 相对路径是从当前工作目录开始到具体文件或目录的路径。

例如,在Linux中,如果当前工作目录是“/home/user”,那么相对路径“Documents/file.txt”表示进入Documents目录,找到名为file.txt的文件,这个文件的绝对路径就是“/home/user/Documents/file.txt”。

. 表示当前目录,. .表示当前目录的上一级目录

文件类型

即使是普通文件,根据其保存数据的不同,也经常被分为不同的类型,我们一般简单的划分为文本文件和二进制文件,分别指代保存被字符集编码的文本和按照标准格式保存的非被字符集编码过的文件。

文本文件和二进制文件是计算机中常见的两种文件类型,它们在编码方式、存储方式和用途等方面有所不同。

  • 编码方式:文本文件是基于字符编码的文件,常见的编码有ASCII编码、UNICODE编码等。二进制文件是基于值编码的文件,由二进制数字0和1组成,不存在统一的字符编码。
  • 存储方式:文本文件采用定长编码方式,每个字符占据固定的比特数,一般是8个比特或16个比特。二进制文件采用变长编码方式,由一组二进制数字0和1组成,多少个比特代表一个值由具体的应用决定。
  • 用途:文本文件主要用于存储和处理文本数据,如文本编辑、排版、程序源代码等。二进制文件主要用于存储和处理二进制数据,如图像、音频、视频、可执行文件等。
  • 文件扩展名:文本文件的扩展名一般是.txt、.doc、.docx等,而二进制文件的扩展名则根据具体的文件类型而定,如.jpg、.mp3、.avi等。

那么平时我们应如何判断某一文件是文本文件还是二进制文件呢?教大家一个简单的方法:我们的电脑上不是有记事本吗,将这个文件以记事本的形式打开,如果打开之后没有出现乱码,则是文本文件,如果出现了乱码则说明该文件为二进制文件。

在这里插入图片描述

这种就是二进制文件。

在这里插入图片描述
这种就是文本文件。

文件权限

文件权限是指在计算机文件系统中,对文件和目录的访问权限。通过对文件设定权限可以达到以下三种访问限制权限:

  1. 只允许用户自己访问;
  2. 允许一个预先指定的用户组中的用户访问;
  3. 允许系统中的任何用户访问。

在Linux中,文件权限分为读、写、执行三种,分别用字母r、w、x表示。每个文件或目录都有三组权限,分别对应文件所有者、同组用户和其他用户。例如,权限设置为“-rwx r-- r–”表示文件所有者具有读、写和执行的权限,同组用户和其他用户则只有读取的权限。

在Windows中,文件权限分为读取、写入、读取和执行、修改四种,分别用字母R、W、RX、M表示。每个文件或文件夹都有一组权限,可以针对不同的用户或用户组进行设置。例如,权限设置为“读取和执行”表示该用户或用户组可以读取和执行该文件,但不能写入或修改。

在这里插入图片描述

Java中的文件操作

在Java中操作文件需要用到 java.io.File 类中的方法来进行操作。

File 类的常见属性

在这里插入图片描述
这两个属性是用来表示系统的路径分隔符的。

File 类常见构造方法

在这里插入图片描述

File(File parent, Stringchild)根据父目录 + 孩子文件路径,创建一个新的 File 实例
File(String pathname)根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径
File(String parent, Stringchild)根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示

这些常用构造方法中,第二种直接指定路径的方法是比较常用的。

File 类常用方法

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

示例一:

public class Test {public static void main(String[] args) throws IOException {File file = new File("d:/test.txt");System.out.println(file.getParent());System.out.println(file.getName());System.out.println(file.getPath());System.out.println(file.getAbsolutePath());System.out.println(file.getCanonicalPath());}
}

在这里插入图片描述

盘符不区分大小写

示例二:

public class Test2 {public static void main(String[] args) {File file = new File("d:/test.txt");System.out.println(file.exists());  //falseSystem.out.println(file.isDirectory());  //falseSystem.out.println(file.isFile());  //false}
}

在创建File对象的时候,如果该文件不存在,并不会自动创建出这个文件。

public class Test2 {public static void main(String[] args) throws IOException {File file = new File("d:/test.txt");System.out.println(file.exists());  //falseSystem.out.println(file.isDirectory());  //falseSystem.out.println(file.isFile());  //false//如果文件创建成功则返回true,创建失败返回falseboolean ret = file.createNewFile();System.out.println(ret);  //trueSystem.out.println(file.exists());  //trueSystem.out.println(file.isDirectory());  //falseSystem.out.println(file.isFile());  //true//如果删除文件成功,则返回true,删除失败则返回falseret = file.delete();System.out.println(ret);  //trueSystem.out.println(file.exists());  //false}
}

示例三:

public class Test3 {public static void main(String[] args) throws IOException, InterruptedException {File file = new File("d:/test1.txt");boolean ret = file.createNewFile();System.out.println(ret);file.deleteOnExit();//让程序等待30秒再结束Thread.sleep(30000);}
}

使用 deleteOnExit(0 方法的时候,不会立刻删除该文件,而是会等 JVM 运行结束的时候才会删除该文件。

在这里插入图片描述
在这里插入图片描述
当程序运行结束之后,test1.txt 文件就被删除了

在这里插入图片描述
在这里插入图片描述

示例四:

public class Test4 {public static void main(String[] args) {File file = new File("D:/code/this-is-my-java-ee-learning");//list() 方法以字符串的形式返回指定目录下的所有文件夹/文件的名称String[] str = file.list();System.out.println(Arrays.toString(str));}
}

在这里插入图片描述

示例五:

public class Test5 {public static void main(String[] args) {File file = new File("D:/code/this-is-my-java-ee-learning");//listFiles() 方法以File对象的形式返回指定目录下的文件夹/文件的File[] files = file.listFiles();for (File f : files) {System.out.println(f.getName());}}
}

在这里插入图片描述

示例六:

public class Test6 {public static void main(String[] args) {File file = new File("d:/aaa");//mkdir() 方法创建目录boolean ret = file.mkdir();System.out.println(ret);}
}

在这里插入图片描述
在这里插入图片描述

mkdir() 方法只能创建出一级目录,不能创建出多级目录。

public class Test6 {public static void main(String[] args) {File file = new File("d:/aaa/bbb/ccc");boolean ret = file.mkdir();System.out.println(ret);}
}

在这里插入图片描述

要想创建出多级目录就需要使用 mkdirs() 方法。

public class Test6 {public static void main(String[] args) {File file = new File("d:/aaa/bbb/ccc");boolean ret = file.mkdirs();System.out.println(ret);}
}

在这里插入图片描述
在这里插入图片描述

示例七:

public class Test7 {public static void main(String[] args) throws IOException {File src = new File("d:/test.txt");boolean ret = src.createNewFile();System.out.println(ret);File des = new File("d:/test1.txt");ret = src.renameTo(des);System.out.println(ret);}
}

在这里插入图片描述
在这里插入图片描述

示例八:

public class Test8 {public static void main(String[] args) throws IOException {File file = new File("d:/test.txt");boolean ret = file.createNewFile();System.out.println(file.canRead());  //trueSystem.out.println(file.canWrite());  //true}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/130021.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见开源协议介绍

开源协议(Open Source License)是一种法律文档,用于规定如何使用、修改和分发开源软件和其他开源项目的规则和条件。这些协议允许创作者或组织将其创造的代码或作品以开放源代码的形式共享给他人,以促进协作、创新和知识共享。常见…

Springboot之AOP的执行顺序

AOP执行顺序验证 项目引入了依赖。自动开启了aop的配置。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>切面上配置Order注解 切面类AopTest1&#xff0c;ord…

【数据结构C/C++】顺序与链式二叉树创建与前中后、层序遍历

文章目录 顺序存储结构二叉树链式存储结构二叉树刷题推荐408考研各数据结构C/C代码&#xff08;Continually updating&#xff09; 顺序存储结构二叉树 顺序存储结构的二叉树的特点在于&#xff0c;其使用数组存放二叉树中的每一个节点。 我们设定根节点的数组索引下标为n&…

MM-Camera架构-ProcessCaptureRequest 流程分析

文章目录 processCaptureRequest\_3\_41.1 mDevice1.2 mDevice->ops->process\_capture\_request1.3 hardware to vendor mct\_shimlayer\_process\_event2.1 mct\_shimlayer\_handle\_parm2.2 mct\_shimlayer\_reg\_buffer processCaptureRequest_3_4 sdm660的摄像头走…

js Learn(异步JavaScript)

在这个模块中&#xff0c;我们来看看异步JavaScript&#xff0c;为什么它很重要&#xff0c;以及如何使用它来有效地处理潜在的阻塞操作&#xff0c;比如从服务器获取资源。 指南 异步JavaScript介绍 在本文中&#xff0c;我们将学习同步&#xff08;synchronous&#xff09…

非凸科技受邀出席源创会,探讨数据技术的未来发展

9月23日&#xff0c;由开源中国联合腾讯云TVP开展的“数据与前沿技术”源创会活动在成都顺利举行&#xff0c;非凸科技受邀出席&#xff0c;与业界专家们共同探讨了数据存储、数据分析、数据挖掘等前沿技术。 会上&#xff0c;非凸科技成都分公司研发总监赵海峰以“量化交易的数…

班级文化建设方案分享 中学高中建设方案

班级文化建设方案 一、基本信息 名称&#xff1a;xxxx计划 时间&#xff1a;XXXX年XX月-XXXX年XX月 地点&#xff1a;[XXXXX] 参与人群&#xff1a;X班全体师生及家长 目的和宗旨&#xff1a;通过班级文化建设&#xff0c;营造积极向上的班级氛围&#xff0c;增强班级凝聚…

嵌入式养成计划-31-网络编程----TCP的并发服务器模型------IO模型--IO多路复用

六十七、 TCP的并发服务器模型 67.1 循环服务器模型 一次只能处理一个客户端&#xff0c;当上一个客户端退出后&#xff0c;才能处理下一个客户端缺点&#xff1a;无法同时处理多个客户端 代码模型 sfd socket(); bind(); listen(); while(1){newfd accept();while(1){re…

web基础及http协议

web基础 全称 world wide web 全球广域网也就是万维网 web1.0 只能看 web2.0 页面交互&#xff1a;静态页面和动态页面 静态页面url&#xff1a;文本文件&#xff0c;可以修改&#xff0c;一般以html .htm保存的文本文件。网站的基础。静态页面和后台数据库没有任何交互不包含…

找到所有数组中消失的数字

题目链接 找到所有数组中消失的数字 题目描述 注意点 在不使用额外空间且时间复杂度为 O(n) 的情况下解决这个问题 解答思路 要想找到消失的数字需要使用哈希表&#xff0c;因为本题要在不使用额外空间且时间复杂度为 O(n) 的情况下解决这个问题&#xff0c;而所有数字出现…

安全性第一!OpenWRT配置SFTP远程文件传输,实现数据安全保护

文章目录 前言1. openssh-sftp-server 安装2. 安装cpolar工具3.配置SFTP远程访问4.固定远程连接地址 前言 本次教程我们将在OpenWRT上安装SFTP服务&#xff0c;并结合cpolar内网穿透&#xff0c;创建安全隧道映射22端口&#xff0c;实现在公网环境下远程OpenWRT SFTP&#xff…

如何使用Docker轻松构建和管理应用程序(一)

如今Docker的使用已经非常普遍&#xff0c;特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务&#xff0c;从而到达弹性部署业务的能力。在云服务概念兴起之后&#xff0c;Docker的使用场景和范围进一步发展&#xff0c;如今在微服务架构越来越流行的情况下&a…