【Java】文件操作(一)

news2024/7/6 18:12:50

在这里插入图片描述



文章目录

  • ✍一、文件的基本认识
    • 1.文件是什么?
    • 2.文本文件和二进制文件
    • 3.文件权限
    • 4.相对路径和绝对路径
      • 1.1绝对路径
      • 1.2相对路径
  • ✍二、文件的基本操作
    • 1.FIle的属性
    • 2.File的构造方法
    • 3.File类的方法
      • 3.1File类的获取操作
      • 3.2File类的判断操作
      • 3.3文件创建和删除
      • 3.4其他的常用方法

✍一、文件的基本认识

1.文件是什么?

文件是计算机中的基本数据单位,也是存储在外部介质(如磁盘、光盘等)上的具有标识名的一组相关信息的集合。文件的基本结构包括文件名、文件内容以及文件属性

文件可以是文本文档、图片、视频、音频、程序等各种类型。每个文件都有一个唯一的文件名,它用于标识和区分不同的文件。文件内容则是文件的主体部分,包含实际的数据或信息。文件属性则提供有关文件的附加信息,如创建日期、修改日期、大小、权限等。

在计算机系统中,文件通过文件系统来组织和管理。文件系统负责文件的存储、检索、保护和共享等操作。用户可以通过文件系统来创建、打开、编辑、保存和删除文件,从而实现数据的存储和传输。

文件在计算机中扮演着重要的角色,它们是数据交换和存储的主要方式之一。无论是个人用户还是企业组织,都依赖文件来保存和处理各种类型的信息。

2.文本文件和二进制文件

文本文件和二进制文件是计算机中两种主要的文件类型,它们在存储和处理数据时有着不同的特点和用途。

文本文件:

文本文件是一种由一系列字符组成的文件,通常用于存储人类可读的文本信息。文本文件中的字符通常使用ASCII、UTF-8或其他字符编码标准来表示。由于文本文件的内容是可读的文本,它们可以很容易地被人类阅读和编辑。常见的文本文件扩展名包括 .txt、.doc、.csv、.xml 等

文本文件通常用于存储简单的文本数据,如文档、配置文件、日志文件等。由于文本文件的内容是明文的,因此它们通常用于在不同系统和应用程序之间交换数据,因为这些系统和应用程序都能够理解并处理文本数据。

二进制文件:

二进制文件则是由一系列二进制位(0和1)组成的文件,用于存储机器可读的数据。这些数据可能是程序、图像、音频、视频或其他非文本信息。二进制文件的内容通常对人类来说是不可读的,需要使用特定的软件或工具来解析和显示。常见的二进制文件扩展名包括 .exe、.jpg、.mp3、.avi 等。

二进制文件通常用于存储复杂的数据结构和程序,因为它们能够直接存储计算机能够理解的机器语言。由于二进制文件存储的是原始数据,因此它们通常比文本文件更小、更高效,并且能够更准确地表示数据。然而,由于二进制文件的格式通常是特定于应用程序或系统的,因此它们可能不如文本文件那样容易在不同的系统和应用程序之间交换。

判断文件是二进制文件还是文本文件
使用记事本打开该文件,如果不是乱码,就是文本文件。如果是乱码,就是二进制文件。
(记事本,属于把文件内容,按照文本的方式来理解)

3.文件权限

文件权限是指文件的访问控制,即哪些用户可以访问文件并执行什么样的操作。文件权限规定了用户对文件的操作权限,包括读取权限(r)、写入权限(w)和执行权限(x)。

  • 读取权限(r):允许用户读取文件的内容。对于目录,具有读取权限的用户可以列出目录中的文件列表。
  • 写入权限(w):允许用户修改文件的内容。对于目录,具有写入权限的用户可以在目录中创建或删除文件。
  • 执行权限(x):对于普通文件,表示用户可以执行该文件。对于目录,则意味着用户可以进入该目录。

文件权限是针对每个文件或目录设置的,它规定了对应的所有者、所属组和其他用户对文件的读取、写入和执行权限。这些权限可以分别针对所有者、所属组和其他用户进行设置。例如,在Linux系统中,可以使用ls -l命令查看文件或目录的权限设置。

文件权限与用户权限共同决定了用户对文件的实际操作权限。当用户对文件进行操作时,系统会根据文件的权限设置以及用户所属的用户组来确定用户对文件的读取、写入和执行权限。

总的来说,文件权限是确保文件安全和系统稳定的重要机制,它允许管理员或文件所有者控制谁可以访问和修改文件,以及他们可以执行哪些操作。

4.相对路径和绝对路径

文件的路径(File Path)是指在计算机文件系统中用于定位和访问文件或目录的完整地址。它通常是由一系列目录名称和子目录名称组成的序列,这些名称按照它们在文件系统中的层次结构进行排列,并使用特定的分隔符(如斜杠“/”或反斜杠“\”)进行分隔。(通常使用/,因为\在字符串中容易被解析成转义字符)

文件路径可以是绝对路径或相对路径:

1.1绝对路径

绝对路径是从文件系统的根目录开始,一直到目标文件或目录的完整路径。它包含了从根目录到目标位置的所有目录和子目录的名称。绝对路径不依赖于当前的工作目录,因此它总是能够精确地定位到文件系统中的特定位置。

1.2相对路径

相对路径则是相对于当前工作目录的路径。它不需要从文件系统的根目录开始,而是从当前所在的目录开始,指定到达目标文件或目录的路径。相对路径依赖于当前的工作目录,因此如果当前工作目录改变,相同的相对路径可能会指向不同的文件或目录。

在这里插入图片描述
我们以D:\IDEA\IntelliJ IDEA Community Edition 2022.3.3\bin为工作目录,我们要在bin文件夹下寻找idea64.exe

相对路径./idea64.exe
这里的.就代表工作目录 D:\IDEA\IntelliJ IDEA Community Edition 2022.3.3\bin

绝对路径D:\IDEA\IntelliJ IDEA Community Edition 2022.3.3\bin\idea64.exe

✍二、文件的基本操作

针对文件系统的操作, 主要是文件/目录的创建和删除, 文件的重命名等.

Java标准库中提供了一个File类, 能够完成对某一路径上的文件进行操作.

1.FIle的属性

修饰符及类型属性说明
static StringpathSeparator依赖于系统的路径分隔符(/或者), String类型的表示.
public static final charpathSeparatorChar依赖于系统的路径分隔符(/或者), char类型的表示.

2.File的构造方法

签名说明
File(File parent, String child)根据父文件对象 + 孩子文件路径, 创建文件
File(String path name)根据一个文件路径去创建文件
File(String parent, String child)根据父目录(路径) + 孩子路径,创建文件

构造File对象时,写的路径,不一定要存在

File(File parent, String child)

File parentDir = new File("/home/user/documents");  
File file = new File(parentDir, "myfile.txt");  
// 此时,file 代表的路径是 /home/user/documents/myfile.txt

File(String parent, String child)

File file = new File("/home/user/documents", "myfile.txt");  
// 此时,file 代表的路径是 /home/user/documents/myfile.txt

3.File类的方法

3.1File类的获取操作

返回值方法说明
StinggetParent()返回File对象父目录文件路径
StringgetName()返回File对象文件名
StringgetPath()返回File对象文件路径
StringgetAbsolutePath()返回File对象的绝对路径
StringgetCanonicalPath()返回File对象修饰过的绝对路径
 public static void main(String[] args) throws IOException {

        File file = new File("d:/Test.txt");

        //获取File对象的文件名
        System.out.println(file.getName());
        //获取File对象的文件路径
        System.out.println(file.getPath());
        //获取File对象父目录文件路径
        System.out.println(file.getParent());
        //获取File对象的绝对路径
        System.out.println(file.getAbsoluteFile());
        //返回File对象修饰过的绝对路径
        System.out.println(file.getCanonicalPath());
    }

在这里插入图片描述

3.2File类的判断操作

返回值方法说明
booleanexists()判断File对象代表的文件是否真实存在
booleanisDirectory()判断File对象代表的文件是否是一个目录
booleanisFile()判断File对象代表的文件是否是一个普通文件
booleanisHidden()判断File对象代表的文件是否是一个隐藏文件
booleanisAbsolute()判断File对象路径名是否是绝对路径
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限
booleancanExecute()判断用户是否对文件有可执行权限
  public static void main(String[] args) {
        File file = new File("d:/Test.txt");

        //判断File对象代表的文件是否存在
        System.out.println(file.exists());
        //判断File对象代表的文件是否时一个目录
        System.out.println(file.isDirectory());
        //判断File对象代表的文件是否是一个普通文件
        System.out.println(file.isFile());
        //判断File对象代表的文件是否是一个隐藏文件
        System.out.println(file.isHidden());
        //判断File对象路径名是否是绝对路径
        System.out.println(file.isAbsolute());
        //判断用户是否对文件有可读权限
        System.out.println(file.canRead());
        //判断用户是否对文件有可写权限
        System.out.println(file.canWrite());
        //判断用户是否对文件有可执行权限
        System.out.println(file.canExecute());
    }

在这里插入图片描述

3.3文件创建和删除

返回值方法说明
booleancreateNewFile()自动创建一个新文件,创建成功返回true
booleanmkdir()创建File对象表示的目录
booleanmkdir()创建File对象表示的多级目录
booleandelete()根据File对象删除该文件,删除成功返回true
voiddeleteOnExist()根据File对象,标注该文件将被删除,当JVM运行结束才会执行

代码展示:

在idea默认目录下进行展示
在这里插入图片描述

public static void main(String[] args) throws IOException {
        File file = new File("./abc.txt");
        //文件未创建,则创建新文件
        if (!file.exists()){
            file.createNewFile();
            System.out.println("创建成功!~~");
        }
        //创建一个文件夹(目录)
        file = new File("./temp");
        file.mkdir();
        System.out.println("创建目录成功!~~");
        //创建多个目录
        file = new File("./aaa/bbb/ccc");
        file.mkdirs();
        System.out.println("创建多个目录成功!~~");
    }

执行结果:

在这里插入图片描述

如果在执行完代码后,没有出现如上效果
右键项目,点击Reload from Disk刷新一下
在这里插入图片描述
文件的删除

 File file1 = new File("./abc.txt");
        file1.delete();

在这里插入图片描述
关于删除方法中的deleteOnExist()不太好演示, 这里解释一下, 这个方法的功能是在程序退出的时候, 自动删除文件, 当我们在程序中需要用到一些 “临时文件” 的时候, 可以用到这个方法, 保证在程序退出的同时把临时文件给删除掉.

什么时候会用到临时文件的呢, 比如这里打开一个word文档, 在打开的同时就会在同级目录下生成出一个临时文件, 关闭word, 这个临时文件被删除了, 临时文件发挥的功能是实时保存我们实时编辑的内容(尤其是没有保存的内容), 防止我们编辑了很多内容但由于一些问题导致我们没有进行保存, 比如工作一半突然停电了, 东西还没来得及保存, 但由于临时文件中实时保存了我们编辑的内容, 等到再次启动word文档时, 就会提醒我们是否要恢复之前的编辑内容.

3.4其他的常用方法

返回值方法说明
String[]list()返回File对象目录下所有的文件名
File[]listFiles()返回File对象目录下的所有文件,以File对象的形式表示
booleanrenameTo(File dest)对文件进行改名
    public static void main(String[] args) {
        File file = new File("./");
        File temp1 = new File("./aaa");
        File temp2 = new File("./eee");

        //获取当前路径目录下所有文件名
        System.out.println(Arrays.toString(file.list()));
        //将目录aaa更名为eee
        System.out.println(temp1.renameTo(temp2));
        //重新获取当前路径目录下所有文件名
        System.out.println(Arrays.toString(file.list()));

    }

在这里插入图片描述


以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UltraScale+的10G/25G Ethernet Subsystem IP核使用

文章目录 前言一、设计框图1.1、xxv_ethernet_01.2、xxv_ethernet_0_sharedlogic_wrapper1.3、xxv_ethernet_0_clocking_wrapper1.4、xxv_ethernet_0_common_wrapper 二、IP核配置三、仿真四、上板测速五、总结 前言 前面我们学习了很多基于XILINX 7系列的高速接口使用&#x…

svn使用(上传自己的项目到svn上)

安卓开发工具版本 创建项目后,首先在.gitgnore文件里面加入你要过滤的文件路径 然后点击VCS——》share Project,然后下一步选择一个svn路径,点击确定后。然后将代码提交。

递归、搜索与回溯算法:FloodFill 算法

例题一 算法思路: 可以利⽤「深搜」或者「宽搜」,遍历到与该点相连的所有「像素相同的点」,然后将其修改成指定的像素即可。 全局变量: int dx[4] { 0,0,1,-1 }, dy[4] { 1,-1,0,0 }; int m, n; int precolor;//记录原先的颜色…

CentOS-7安装Mysql并允许其他主机登录

一、通用设置(分别在4台虚拟机设置) 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入: 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服…

【C++ 多态】带你详细了解虚函数表

文章目录 1.一道面试题 -- 引入虚函数表2.多态是怎么实现的呢?2.1满足多态的时候🐧2.2不满足多态的时候🐧 3.打印虚函数表 1.一道面试题 – 引入虚函数表 ①🍎 _vfptr 虚表指针,虚表指针是用来实现多态的 &#xff08…

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程 XGP这个游戏平台小伙伴们并不陌生吧,它是微软Xbox游戏部门推出的游戏租赁制会员服务,主要用于主机和PC两个平台。这个平台的会员就可以免费享受多款大制作游戏,而且每个月还会自动更新…

笔记 | 编译原理L2:词法分析(lexical analysis)

1 概述 词法分析(lexical analysis),也称scanning, 编译程序的第一阶段,其作用是识别单词(程序意义上)并找出词法错误. 读入源程序的输入字符、将它们拆分成词素,生成并输出一个词法单元序列,每个词法单元对应于一个词素 回顾词法分析在整个…

jpa分页插件对象Pageable出现了错误异常如何解决?

jpa分页插件对象Pageable出现了错误异常如何解决?! 一般来说,遇到这种的错误异常情况,通常情况 下,都是因为程序员把传递的分页页码数字写错了。 正常情况下,分页页码起始数字应该是0;而不是1…

OpenCASCADE(OCC)读入含中文汉字标签的内容后乱码的解决方法

笔者在导入一个由SolidWorks生成的step文件的时候,节点名称是中文,于是乎生成的节点树的名称都是乱码了,经过多次的排查调研,最后的解决办法如下: 1.老版本的occ库,是无法兼容读入中文编码的step文件的&am…

Linux 学习之路 -- 进程篇 -- 进程控制

目录 一、进程终止 <1>使用语言和系统自带的方法&#xff0c;进行转换 <2>自定义错误码 <3>小结&#xff1a; <2>两个接口exit / _exit 二、进程等待 <1>简单了解 <2>wait调用 <3>waitpid调用 <4>status <1>W…

Laravel 6 - 第十四章 响应

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

debian配置distcc分布式编译

前言 distcc 是一个用于在网络上的多台机器上分发 C、C、Objective C 或 Objective C 代码构建的程序。 distcc 应始终生成与本地构建相同的结果&#xff0c;易于安装和使用&#xff0c;并且通常比本地编译快得多。 distcc 不要求所有机器共享文件系统、同步时钟或安装相同的…

【目录】Armv8/Armv9付费专栏

快速链接: . &#x1f449;&#x1f449;&#x1f449; ARMv8/ARMv9架构入门到精通-[目录] &#x1f448;&#x1f448;&#x1f448; 付费专栏-付费课程 【购买须知】:联系方式-加入交流群 ----联系方式-加入交流群 个人博客笔记导读目录(全部) 目录 【Arm基础】【指令和寄…

在AI工业变革的拐点,迎来AI智算“安卓时刻”

今天&#xff0c;我们正在进入AI的工业变革拐点期。所谓AI的工业变革&#xff0c;主要指以大模型AI所引发的通用AI和以通用AI为目标构建的工业标准化AI智算基础设施。 在通用计算时代&#xff0c;X86所代表的工业标准化技术体系造就了企业IT、互联网与云数据中心。而在智算时代…

Mysql索引详解(索引分类)

文章目录 概述索引对查询速度的影响索引的优缺点索引类型一级索引和二级索引的区别MySQL 回表联合索引&#xff08;最左前缀原则主键索引和唯一索引的区别BTree索引和Hash索引的区别 覆盖索引索引下推加索引能够提升查询效率原因MySQL 索引结构采用 B树原因索引失效的场景MySQL…

油管评论抓取软件,专为文科生、小白用户开发!

我用Python开发的youtube评论采集软件&#xff0c;爬取到的字段包含&#xff1a; 评论id、评论内容、评论时间、评论作者昵称、评论作者频道、点赞数 软件界面效果&#xff1a; 采集结果数据&#xff1a; 软件使用注意事项&#xff1a; 详细讲解文章&#xff1a; https://…

1-35 集合框架

一 集合的介绍 1.集合是 Java 提出用来进行多个数据存储的 "容器" , 那数组同样具备这样的功能 , 为什么还要有集合 , 数组一旦创建长度固定 , 只能存放一种数据类型 , 不够灵活,因此 Java提出更灵活的操作 , 存放任意引用数据类型 的 容器 -- 集合 2.分类 ①单列…

变电站的组成、作用及功能

变电站的组成、作用及功能 变电站是电力系统的重要组成部分&#xff0c;主要用于实现电力输送、配电和转换的功能。它是将高压电力系统变成低压电力系统的中间站点&#xff0c;它可以将高压输电线路传输的电能通过变压器进行调整&#xff0c;将电能变成适应于城市、乡村和工矿企…

STM32F103单片机C语言模块化编程实战:按键控制LED灯并串口打印详解与示例

一、开发环境 硬件&#xff1a;正点原子 STM32F1精英版 开发板 单片机&#xff1a;STM32F103ZET6 Keil版本&#xff1a;5.32 STM32CubeMX版本&#xff1a;6.9.2 STM32Cube MCU Packges版本&#xff1a;STM32F1 V1.8.5 虽然这里演示的是STM32F103&#xff0c;但是STM32F40…

STM32cubemx和HAL库的使用入门--点亮一颗LED

一&#xff1a;流程介绍 &#xff08;1&#xff09;环境搭建 1 &#xff1a;stm32cubemx安装 2 &#xff1a;stm32xxFW安装 3 &#xff1a;MDK5安装 4 &#xff1a;生成MDK版本project &#xff08;2&#xff09;stm32cubemx创建工程&#xff0c;选择芯片型…