<文件操作及常用的API>

文章目录

    • 专栏导读
    • 🚀简单认识一下文件
    • 🚀树形结构和目录
    • 🚀文件路径-相对路径、绝对路径
    • 🚀文件类型
    • 🚀Java中文件的操作
    • 🚀File 类的常用方法

专栏导读

🚀多线程章节
💐数据结构剖析
🌷JavaSE语法

🚀简单认识一下文件

我们所谓的“文件”,是一个广义的概念,在操作系统里,会把很多的硬件设备和软件资源都抽象成“文件”,进行统一的管理;而大部分情况下,谈到文件都是指硬盘上的文件,文件就相当于是对“硬盘”的一种抽象,在平时所说的操作硬盘其实也就是操作文件,通过对文件的读写从而实现对硬盘的操作;

这里简单提几点:内存 VS 硬盘

1.内存读取速度块,硬盘慢

2.内存空间小,硬盘空间大

3.内存贵,硬盘便宜

4.内存中的数据,断电就丢失,硬盘中的数据断电后还在可以长期保存

🚀树形结构和目录

在计算机中,针对于多个文件都是使用文件夹进行管理,而“文件夹”这个名字只是民间的一种叫法,而文件夹在计算机中被称为**“目录**”; 随着计算机的发展,而在计算机上存储的数据也变的越来越多,所需要的文件也越来越多,所以,就衍生出了一重组织这些文件的方式——按照层级结构进行组织,这就类似于数据结构中的树形结构,在一个根目录下(根节点)面,又有许多的子目录(子节点),在子目录中又有许多的各种格式的文件(根节点);

在这里插入图片描述

🚀文件路径-相对路径、绝对路径

在众多目录中,如果想要找到某一个文件,就非常的费力气,但是呢,这难不倒我们的科学家,科学家们就利用树形的层次结构,通过“\”来区分每一层的目录,从而确定文件的具体位置:

C: \ Program Files (x86) \ Windows Media Player

这样用来确定文件位置的一串字符串就称为“文件的路径”

文件路径又分为:绝对路径和相对路径

绝对路径:是以 D:\ 盘 或者 C:\ 盘 这种盘符开头的路径

相对路径:指定一个目录作为基准目录,从基准目录出发,进行路径的描述称为相对路径,而相对路径通常是以 . 或者 … 开头的,两个点表示从基准目录的上一层目录开始寻找,一个点表示当前目录开始寻找,一个点也 可以省略;

在这里插入图片描述

🚀文件类型

从编程的角度看,文件类型主要分为:文本文件、二进制文件两大类;

  • 文本文件:文件中保存的数据都是字符串,保存的内容都是合法的字符

  • 二进制文件:文件中保存的数据都是二进制数据;

    什么是“合法的字符”

    在计算机中,存储的数据其实都是二进制数据,但是,数据通过字符集进行编码的,就可以翻译成合法的字符,例如,如果一个文件是utf8编码的,此时文件中的每个数据都是合法的utf8编码的字符,那么就可以认为这个文件是文本文件,如果存在一些不是utf8合法字符的情况,那么就是二进制,比较简单的验证方法就是,将一个文件放到记事本中,如果是正常的文本字符,那就是文本文件,如果是乱码情况,就是二进制文件

区分是二进制还是文本文件是非常重要的,因为利用编程针对文本文件和二进制文件的编写方式是不同的,下面就来介绍一下针对于文本文件的编写方式

🚀Java中文件的操作

Java针对文件的操作,主要分为针对文件系统的操作针对文件内容的操作 两类,本篇文章主要讲解文件系统的操作:

1.文件系统的操作

例如,创建文件,删除文件,文件重命名,判断文件是否存在……

在Java中,使用了一个File类来操作文件

一个File对象,就表示硬盘上的一个文件,在构造对象时,就需要把这个文件路径作为参数传过去;

下面看一下File的三个构造方法:

构造方法说明
File(File parent, String child)根据父目录+孩子文件路径,创建一个新的File对象
File(String pathname)根据文件路径创建一个新的File对象,路径可以是绝对路径或者相对路径
File(String parent, String child)根据父目录+孩子文件路径,创建一个新的File对象,父目录使用路径表示

以上的构造方法,最常用的就是第二个,直接指定一个路径实现File对象的创建

🚀File 类的常用方法

**示例一:**关于路径的操作

返回值类型方法说明
StringgetParent()返回 File 对象的父目录文件路径
StringgetName()返回 File 对象的纯文件名称
StringgetPath()返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径

代码演示:

    public static void main(String[] args) {
        File file = new File("d:/新建文件夹/text.txt");//注意:如果指定的路径是一个文件,则必须将文件后缀写上
        System.out.println(file.getParent());//获取file对象的父目录
        System.out.println(file.getName());//获取file对象的纯文件名称
        System.out.println(file.getPath());//返回file对象的文件路径
        System.out.println(file.getAbsoluteFile());//返回file对象的绝对路径
    }

在这里插入图片描述

**示例二:**文件的判断、创建

返回值方法说明
booleanexists()判断 File 对象锁描述的文件/目录是否真实存在
booleanisDirectory()判断 File 对象代表的文件是否是一个目录
booleanisFile()判断 File 对象代表的文件是否是普通文件
booleancreateNewFile()根据 File 对象,自动创建一个空文件,成功创建后返回true
    public static void main(String[] args) throws IOException {
        File file = new File("d:/新建文件夹/text.txt");//注意:如果指定的路径是一个文件,则必须将文件后缀写上
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        //在进行上述判断时,该目录中并没有text.txt文件
        System.out.println(file.createNewFile());//文件被创建
    }

在这里插入图片描述

**示例三:**文件的删除

返回类型方法说明
booleandelete()根据 File 对象,删除该文件,成功删除后返回true
voiddeleteOnExit()根据 File 对象,标注文件将被删除,删除操作会在JVM运行结束时才进行
    public static void main(String[] args) throws IOException {
        File file = new File("d:/新建文件夹/text.txt");
        System.out.println(file.delete());
        file.deleteOnExit();
    }

**示例四:**创建目录

返回类型方法说明
booleanmkdir()创建 File 对象代表的目录
booleanmkdirs()创建 File 对象代表的目录,如果有必要,会创建中间目录

(1)mkdir

在 D盘 中有新建文件夹、目录1、目录2三个目录,在这三个目录的基础上要创建目录3,那么根据这个路径创建一个file对象后,调用mkdir()方法就可以创建目录了

    public static void main(String[] args) throws IOException {
        File file = new File("d:/新建文件夹/目录1/目录2/目录3");
        System.out.println(file.mkdir());
    }

在这里插入图片描述

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

现在更改路径,把中间的目录1、目录2给删除,然后指定路径时,仍然使用上述路径惊醒创建,再调用mkdir()创建目录,就会出现错误;

    public static void main(String[] args) throws IOException {
        File file = new File("d:/新建文件夹/目录1/目录2/目录3");
        System.out.println(file.mkdir());
    }

在这里插入图片描述

因为使用mkdirs() 创建目录时,在创建 File对象时,所指定的路径中,处了待创建的目录,其他目录必须是已经存在了的,所以,这对于这种情况就可以使用下面这个方法;

(2) mkdirs

    public static void main(String[] args) throws IOException {
        File file = new File("d:/新建文件夹/目录1目录2/目录3");
        System.out.println(file.mkdirs());
    }

在这里插入图片描述

**示例五:**获取目录下的所有文件

返回类型方法说明
String[]list()返回 File 对象代表的目录下所有的文件名
File[]listFiles()返回 File 对象代表的目录下所有的文件,以File对象表示
    public static void main(String[] args) throws IOException {
        File file = new File("d:/新建文件夹");
        
        String[] files1 = file.list();
        
        File[] files2 = file.listFiles();

       System.out.println(Arrays.toString(files1));
        System.out.println(Arrays.toString(files2));
    }

在这里插入图片描述

**示例六:**文件重命名

返回类型方法说明
booleanrenameTo(File dest)重命名文件
    public static void main(String[] args) throws IOException {
        File file = new File("d:/新建文件夹/111.txt");//保证源文件必须存在
        File dest = new File("d:/新建文件夹/222.txt");
        System.out.println(file.renameTo(dest));

    }

在这里插入图片描述

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

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

相关文章

京东账单导出的手工操作

文章目录 京东账单导出的手工操作概述笔记备注END 京东账单导出的手工操作 概述 在京东网页版找不到账单导出的操作. 在手机京东中可以导出账单. 当前京东APP的导出实现有点bug, 在输入验证码后, 发送邮件. 可是显示验证码失败, 但是已经发了邮件. 可能是因为发送成功提示不明…

半平面求交 - 洛谷 - P3194 [HNOI2008] 水平可见直线

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 往期相关背景点击前往 题目大意 题目链接 https://www.luogu.com.cn/problem/P3194 在直角坐标系中给定一些直线,然后从Y轴无穷大处往0处看,…

如何在面试中胜出?接口自动化面试题安排上

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

定位咨询与资源分配:最大化效益的关键

在当今竞争激烈的商业环境中,企业如何确保每一分投资都能产生最大的回报?答案在于有效的市场定位和精明的资源分配。本文将探讨定位咨询如何成为企业资源分配和效益最大化的关键。 定位咨询的核心作用 定位咨询是企业发现其在市场上独特地位的过程。这不仅关乎营销…

如何挑选护眼灯?光照均匀度、色温、眩光这3点!

光照环境对我们的生活质量影响深远,尤其在孩子的成长过程中,良好的光照环境对其学习效率、视力保护都至关重要。光照中的很多因素都对视力有着或大或小的影响,本文将从光照均匀度、眩光、色温三个关键点,深入浅出地让消费者了解其…

大模型在数据分析场景下的能力评测|进阶篇

做数据分析,什么大模型比较合适? 如何调优大模型,来更好地做数据计算和洞察分析? 如何降低整体成本,同时保障分析体验?10月25日,我们发布了数据分析场景下的大模型能力评测框架(点击…

【验证码逆向专栏】百某网数字九宫格验证码逆向分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未…

正版软件|Ashampoo WinOptimizer 26 - Win优化器

使用 Ashampoo WinOptimizer 加速、优化和清洁你的电脑,非常轻松! 关于Ashampoo WinOptimizer Windows是很棒,但总有改进的余地。 这就是Ashampoo WinOptimizer 26的用武之地! 因为,随着时间的推移,操作系统往往会变慢…

Git常用规范

分支命名规范 Git分支命名规范可以根据具体的项目和团队的需要而有所不同,但是以下是一些常见的规范: 主分支(master/main):这个分支通常是主要的稳定分支,它包含了当前生产环境的代码。在一些项目中&…

妙手ERP本期功能优化:TikTok创建折扣活动可默认生成活动名称和时间、Shopee利润明细新增字段等

为了给卖家朋友带来更好的使用体验,更高效地运营跨境店铺,妙手ERP在上周优化了以下多项功能。 01、产品模块优化 全平台 - 批量编辑平台SKU增加翻译功能 TikTok - 创建折扣活动时,可默认生成活动名称和时间 02、订单模块优化 全平台 - 扫…

day21_mysql

今日内容 零、 复习昨日 第一阶段: Java基础知识(会编程,懂编程) 第二阶段: Web开发(前端,后端,数据库) 一、MySQL 一、引言 二、数据库 2.1 概念 ​ 数据库是“按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合…

一篇文章让你真正搞懂epoll机制

目录 1.epoll简介 2.epoll实现原理 3.创建epoll文件 4.增加,删除,修改epoll事件 5.epoll事件就绪 6.epoll编程流程 7.epoll常见问题? 1.epoll简介 epoll是Linux内核为处理大批量文件描述符而作了改进的poll,它能显著提高程…

Visual Studio Code配置c/c++环境

Visual Studio Code配置c/c环境 1.创建项目目录2.vscode打开项目目录3.项目中添加文件4.文件内容5.配置编译器6.配置构建任务7.配置调试设置 1.创建项目目录 d:\>mkdir d:\c语言项目\test012.vscode打开项目目录 3.项目中添加文件 4.文件内容 #include <iostream> u…

Langchain知识点(下)

原文&#xff1a;Langchain知识点&#xff08;下&#xff09; - 知乎 代码汇总到&#xff1a; https://github.com/liangwq/Chatglm_lora_multi-gpu/tree/main/APP_example/langchain_keypoint​github.com/liangwq/Chatglm_lora_multi-gpu/tree/main/APP_example/langchain_…

【机器学习6】概率图模型

用观测结点表示观测到的数据&#xff0c; 用隐含结点表示潜在的知识&#xff0c; 用边来描述知识与数据的相互关系&#xff0c; 最后基于这样的关系图获得一个概率分布 。 概率图中的节点分为隐含节点和观测节点&#xff0c; 边分为有向边和无向边。 从概率论的角度&#xff0c…

点成方案丨使用细胞计数仪监控CAR-T细胞疗法的生产

一、概述 嵌合抗原受体&#xff08;CAR&#xff09;是经过改造后赋予T细胞靶向特定抗原的新能力的受体蛋白。这些受体是嵌合的&#xff0c;因为它们将抗原结合和T细胞激活功能结合到一个受体中。CAR-T细胞疗法使用经过CAR改造的T细胞来治疗癌症。CAR-T免疫疗法的前提是修改T细…

基于Genio 700 (MT8390)芯片的AR智能眼镜方案

AR眼镜是一种具有前所未有发展机遇的设备&#xff0c;无论是显示效果、体积还是功能都有明显的提升。AR技术因其智能、实时、三维、多重交互和开放世界的特点备受关注。 AR眼镜集成了AR技术、语音识别、智能控制等多项高科技功能&#xff0c;可以帮助用户实现更加便捷、高效、个…

智能导诊系统:基于机器学习和自然语言处理技术,可快速推荐合适的科室和医生

智能导诊系统是一种基于人工智能技术的新型系统&#xff0c;它能够为医院提供患者服务和管理&#xff0c;提高医院的管理效率和服务水平。 技术架构&#xff1a;springbootredismybatis plusmysqlRocketMQ 以下是智能导诊系统的应用场景和功能特点&#xff1a; 应用场景 1.患…

pg运维之checkpoint

How PostgreSQL writes data 在我们更详细地讨论检查点之前&#xff0c;了解PostgreSQL如何写数据是很重要的。让我们看一下下面的图片。 最重要的是&#xff0c;我们必须假设崩溃可能在任何时候发生。为什么会有这样的关系&#xff1f;嗯&#xff0c;我们要确保你的数据库永…

微信聚合聊天,自动回复

微信&#xff0c;这款融合通讯、社交、娱乐、小程序于一体的平台&#xff0c;已经深深融入我们的日常生活。作为我们日常生活中不可或缺的社交工具&#xff0c;尤其在工作中&#xff0c;我们需要通过微信来沟通客户&#xff0c;这个时候我们就会希望有快速回复客户的方式秒回客…