【Java】文件操作(一)

在这里插入图片描述



文章目录

  • ✍一、文件的基本认识
    • 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()));

    }

在这里插入图片描述


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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

this指向

调用方式示例 函数中this的指向通过new调用new method()新对象直接调用method()全局对象通过对象调用obj.method()前面的对象call、apply、bindmethod.call(ctx)第一个参数 我们说的this指向是一个函数里边的this指向,如果这个this不在函数里边,那th…

C. Inhabitant of the Deep Sea

本题链接:Problem - C - Codeforces 题目: 样例: 输入 6 4 5 1 2 4 3 4 6 1 2 4 3 5 20 2 7 1 8 2 2 2 3 2 2 15 1 5 2 7 5 2输出 2 3 5 0 2 2 思路: 数学模拟。 根据题意,一前一后的攻击,攻击k次后&…

PotPlayer详细安装教程

安装步骤 进入官网: https://potplayer.tv/ 根据自己电脑的windows系统选择对应的版本安装 选择合适的字体 下载完成 优化设置 刚下好的potplayer仅限于能用,所有设置均为默认状态,我们需要进行优化 首先打开potplayer 右击选择选项 在…

三、CPU基础-缓存

计算机中缓存一般分为两个部分 1.内存 2.CPU Cache 一、CPU Cache分级 CPU Cache 通常分为大小不等的三级缓存,分别是 L1 Cache、L2 Cache 和 L3 Cache。 L1 Cache 和 L2 Cache 都是每个 CPU 核心独有的(通常会分为「数据缓存」和「指令缓存」&#…

Git--原理与使用

目录 一、课程目标二、初始Git三、安装Git3.1 Linux-centos 四、Git的基本操作4.1 创建Git本地仓库 五、配置Git六、认识工作区、暂存区、版本库七、添加文件八、查看.git九、修改文件十、版本回退十一、撤销修改11.1 情况一:对于工作区的代码,还有add11…

海康NVR接入视频监控平台部分视频浏览失败,显示503错误的解决办法

目录 一、问题概述 二、问题排查 (一)排查思路介绍 (二)平台排查 1、确定排查的思路 2、信令控制模块的排查 3、媒体转发模块的排查 (三)客户设备排查 1.观察正常视频的设置 2. 调查问题原因 三…

B端设计实战:基于角色属性的权限设计

编辑导读:“权限控制”是中后台的基础能力,用于管控操作人员在平台内可做的事项内容。即通过权限控制,可以决定哪些人在平台内可以做哪些事。本文作者围绕角色&属性的权限设计展开分析,希望对你有帮助。 Hello,我是一名交互设计师。 随着3月暖春的即将到来,苏州的疫…

足球场体育馆三维可视化:颠覆传统观赛体验,开启视觉新纪元

在数字化浪潮席卷全球的今天,三维可视化技术正以其独特的魅力引领着体育场馆建设的革新潮流。这一技术的出现,不仅为观众带来了前所未有的视觉享受,更在体育产业的发展中,开启了一扇通往未来的大门。 足球场体育馆三维可视化&…

YOLOV1学习笔记

1. 前置知识简介 1.1 方向梯度直方图(HOG, Histogram of Oriented Gradient) 在计算机视觉以及数字图像处理中方向梯度直方图是一种能对物体进行检测的基于形状边缘特征的描述算子(用于量化图像局部特征的算法工具,它将图像中的…

string 类以及模拟实现

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

Flutter 中优雅切换应用主题的组件

Flutter 中优雅切换应用主题的组件 视频 https://youtu.be/L–XLpc452I https://www.bilibili.com/video/BV1wD421n75p/ 前言 原文 https://ducafecat.com/blog/flutter-app-theme-switch Adaptive Theme 这个组件通过包裹 MaterialApp 的方式整体管理 theme 主题&#xff0…

Java冲突

本身 父类 接口(多) 如果出现同样名字的方法,就会出现冲突 * 情况描述1: * 当一个类,继承了父类,实现了某接口,父类中的成员方法和接口中的方法重名 * 解决方法: * 子类就近选择父类成员方法 亲爹优先原则 * *使用格式: * 父类:super.方法名 * 父接口:父接口名.super.方…

QT——其他方式实现HelloWrold

QT——其他方式实现HelloWrold 使用输入框实现使用代码实现 通过按钮实现信号槽代码方式实现 我们之前对QT实现HelloWorld有了一些基本的了解,用了一些简单的方法实现了HelloWorld,如果对QT还不怎么了解的,可以点击这里: https://…

算法提高 第一期 KMP扩展算法

1## 具体思路: 和KMP算法的是想类似,充分利用已经比较字符性质来减少冗余的字符比较次数。KMP的思想是充分的利用模式串中所有前缀字串(以模式串为开头的字串)的真前缀和真后缀(指子串的开始字符与子串的最后字符相等的…

【C 数据结构】二叉树

文章目录 【 1. 基本原理 】1.1 二叉树的性质1.2 满二叉树1.3 完全二叉树 【 2. 二叉树的顺序存储结构 】2.1 完全二叉树的顺序存储2.2 普通二叉树的顺序存储2.3 完全二叉树的还原 【 3. 二叉树的链式存储结构 】【 4. 二叉树的先序遍历 】4.1 递归实现4.2 非递归实现 【 5. 二…

MongoDB磁盘空间占满,导致数据库被锁定,如何清理数据和磁盘空间

一、问题 1、我在实际项目中,遇到一个问题,随着数据每天的不断增加,导致mongodb的磁盘空间站满了,数据库被锁了,无法使用。 2、故障表现 部署的应用程序突然无法将数据写入数据库,但是可以正常读取数据。…

栈和队列详解

目录 栈栈的概念及结构栈的实现数组栈的实现数组栈功能的实现栈的初始化void STInit(ST* pst)初始化情况一初始化情况二 代码栈的插入void STPush(ST* pst, STDataType x)代码 栈的删除void STPop(ST* pst)代码 栈获取数据STDataType STTop(ST* pst)代码 判断栈是否为空bool ST…

裸金属服务器是什么

自推出裸金属服务器以来,它一直断断续续地出现在我们面前。最近,关于裸金属服务器、什么是裸金属服务器、裸金属服务器可以做什么、数据托架共享的讨论越来越多: 裸金属服务器(bare metal server,BMS)的官…

如何在OpenWRT上配置SFTP远程文件传输

如何在OpenWRT上配置SFTP远程文件传输 OpenWRT 是一款广泛使用的开源路由器固件,它能够让普通的家用路由器具备高级路由功能,提供更多自定义和优化选项。本文将介绍如何在OpenWRT上配置SFTP(SSH文件传输协议)服务,以便…

js生成不同的阅读数分配到每一篇上面,不会因为刷新而变动

js生成不同的阅读数分配到每一篇上面,不会因为刷新而变动 {%- for article in blog.articles -%}<div class"blog-articles__article article">{%- render article-card,article: article,media_height: section.settings.image_height,media_aspect_ratio: a…