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

<文件操作及常用的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));}

在这里插入图片描述

相关文章:

<文件操作及常用的API>

文章目录 专栏导读🚀简单认识一下文件🚀树形结构和目录🚀文件路径-相对路径、绝对路径🚀文件类型🚀Java中文件的操作🚀File 类的常用方法 专栏导读 🚀多线程章节 💐数据结构剖析 &am…...

深入探讨Linux中的文本文件查看命令

目录 前言1 cat命令2 less命令3 more命令4 head命令5 tail命令6 总结 前言 在Linux系统中,文本文件是日常工作中不可或缺的一部分,无论是配置文件、日志文件还是代码文件,都需要用到文本文件查看命令。在本文中,我们将深入研究一…...

asp.net企业员工档案信息管理系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目

一、源码特点 asp.net企业员工档案信息管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 asp.net企业员工档案信息管理系统 二、功能介绍 本系统使用Microsoft Visual Studio 2019为开发工具&…...

WPF中的xmlns 和xmlns:x有什么区别?

WPF (Windows Presentation Foundation) 中的 xmlns 和 xmlns:x 是XML命名空间的声明,它们在XAML(eXtensible Application Markup Language)中被广泛使用。XAML是WPF、Silverlight、Xamarin.Forms等技术中用于定义UI元素的标记语言。 xmlns: …...

为什么流量卡禁区多,而手机卡却可以用呢?

很多朋友比较关心流量卡禁区的问题,当我们申请流量卡时,运营商都会在套餐详情中标明具体的禁发地区,这个时候很多朋友都会有疑问了,为什么流量卡不能用的地区,可以申请到手机卡呢。 ​  想要清楚这个问题&#xff0…...

Linux 桌面应用

Part I: Linux 系统概述 什么是 LinuxLinux 的历史和版本Linux 发行版介绍Linux 的优缺点 Part II: Linux 安装与配置 5. 硬件要求与准备工作 6. 安装 Linux 操作系统 7. Linux 系统初始化设置 8. Linux 系统更新与升级 9. Linux 基础配置 Part III: Linux 命令行 10. Linux…...

NLP领域的突破催生大模型范式的形成与发展

当前的大模型领域的发展,只是范式转变的开始,基础大模型才刚刚开始改变人工智能系统在世界上的构建和部署方式。 1、大模型范式 1.1 传统思路(2019年以前) NLP领域历来专注于为具有挑战性的语言任务定义和设计系统&#xff0c…...

大模型的全面回顾,看透大模型 | A Comprehensive Overview of Large Language Models

大模型的全面回顾:A Comprehensive Overview of Large Language Models 返回论文和资料目录 论文地址 1.导读 相比今年4月的中国人民大学发表的大模型综述,这篇综述角度更侧重于大模型的实现,更加硬核,更适合深入了解大模型的一…...

【瑞禧分享】碳化硅纳米线 SiC纳米线 <100nm SiC晶须 SiC短纤维

碳化硅纳米线 规格或纯度:线/晶须含量:99% 供应商:西安瑞禧生物 英文名称:SiC Nanowire 别名:碳化硅纳米线,SiC晶须,SiC短纤维,SiC纳米线 英文别名:SiC Nanowire,SiC whiskers,SiC fiber 介绍&#x…...

P3371 【模板】单源最短路径(弱化版)

【模板】单源最短路径(弱化版) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路…...

一文入门Springboot+actuator+Prometheus+Grafana

环境介绍 技术栈 springbootmybatis-plusmysqloracleactuatorPrometheusGrafana 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 本地主机应用 192.168.1.9:8007 PrometheusGrafana安装在同一台主机 http://…...

基于Qt 多线程(继承 QObject 的线程)

​ 继承 QThread 类是创建线程的一种方法,另一种就是继承QObject 类。继承 QObject 类更加灵活。它通过 QObject::moveToThread()方法,将一个 QObeject的类转移到一个线程里执行。恩,不理解的话,我们下面也画个图捋一下。 通过上面的图不难理解,首先我们写一个类继承 QObj…...

图论11-欧拉回路与欧拉路径+Hierholzer算法实现

文章目录 1 欧拉回路的概念2 欧拉回路的算法实现3 Hierholzer算法详解4 Hierholzer算法实现4.1 修改Graph,增加API4.2 Graph.java4.3 联通分量类4.4 欧拉回路类 1 欧拉回路的概念 2 欧拉回路的算法实现 private boolean hasEulerLoop(){CC cc new CC(G);if(cc.cou…...

(一)什么是Vite——vite介绍与使用

什么是Vite Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。 它主要由两部分组成: 一个开发服务器,它基于 原生 …...

直流电动机四象限运行控制变流器设计

摘 要 节能和效率是工业经济发展的主题,电机在各行各业都是主要的动力来源, 直流电机以其控制简单,效率高,功率密度大等优势脱颖而出。基于直流电动机四象限运行控制变流器应用广泛,比如电子设备、电机控制、工业等行…...

虹科示波器 | 汽车免拆检修 | 2021款广汽丰田威兰达PHEV车发动机故障灯异常点亮

一、故障现象 一辆2021款广汽丰田威兰达PHEV车,搭载A25D-FXS发动机和动力蓄电池系统(额定电压为355.2V,额定容量为45.0Ah),累计行驶里程约为1万km。车主反映,高速行驶时发动机突然抖动,且发动机…...

机器学习和深度学习领域的算法和模型

机器学习和深度学习领域有许多算法和模型,以下是一些常见的算法和模型: 线性回归(Linear Regression)逻辑回归(Logistic Regression)决策树(Decision Tree)随机森林(Ran…...

减轻关键基础设施网络安全风险的 3 种方法

物理安全和网络安全之间存在相当大的重叠,特别是在保护关键基础设施方面。防止基础设施被篡改需要在物理安全方面进行大量投资,但任何连接到互联网的设备都代表着更广泛网络的潜在攻击点。 缺乏足够保护的设备可能会给这些对手在网络中提供立足点&#…...

Redis的特性以及使用场景

分布式发展历程参考 陈佬 http://t.csdnimg.cn/yYtWK 介绍redis Redis(Remote Dictionary Server)是一个基于客户端-服务器架构的在内存中存储数据的中间件,属于NoSQL的一种。它可以用作数据库、缓存/会话存储以及消息队列。 作为一种内存数…...

【python后端】- 初识Django框架

Django入门 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🌝分享学习心得,欢迎指正,大家一起学习成长! 文章目录 Django入门…...

队列与堆栈:原理、区别、算法效率和应用场景的探究

队列与堆栈:原理、区别、算法效率和应用场景的探究 前言原理与应用场景队列原理应用场景: 堆栈原理应用场景递归原理和堆栈在其中的作用递归原理堆栈作用 队列与堆栈区别队列堆栈算法效率 前言 本文主要讲解数据结构中队列和堆栈的原理、区别以及相关的…...

数据结构与算法【链表:一】Java实现

目录 链表 单向链表 哨兵链表 双向链表 环形链表 链表 链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续。 随机访问性能 根据 index 查找,时间复杂度 O(n) 插入或删除性能 起始位置:O(1)结束位…...

数据结构 | 队列的实现

数据结构 | 队列的实现 文章目录 数据结构 | 队列的实现队列的概念及结构队列的实现队列的实现头文件,需要实现的接口 Queue.h初始化队列队尾入队列【重点】队头出队列【重点】获取队列头部元素获取队列队尾元素获取队列中有效元素个数检测队列是否为空销毁队列 Que…...

flutter 集成 高德地图,退出界面闪退

android:allowNativeHeapPointerTagging"false"应用尝试释放系统堆分配器未分配的指针。 应用中的某个部分修改了指针的顶部字节。不能修改指针的顶部字节,您需要更改代码来修复此问题。 指针的顶部字节被错误使用或修改的示例包括: 指向特定…...

数据结构----链式栈的操作

链式栈的定义其实和链表的定义是一样的,只不过在进行链式栈的操作时要遵循栈的规则----即“先进后出”。 1.链式栈的定义 typedef struct StackNode {SElemType data;struct StackNode *next; }StackNode,*LinkStack; 2.链式栈的初始化 Status InitStack(LinkSta…...

识别伪装IP的网络攻击方法

识别伪装IP的网络攻击可以通过以下几种方法: 观察IP地址的异常现象。攻击者在使用伪装IP地址进行攻击时,往往会存在一些异常现象,如突然出现的未知IP地址、异常的流量等。这些现象可能是攻击的痕迹,需要对此加以留意。 检查网络通…...

C 语言指针

C 语言指针 在本教程中,您将学习指针。什么是指针,如何使用它们以及在示例的帮助下使用它们时可能遇到的常见错误。 指针是 C和C 编程的强大功能。在学习指针之前,让我们学习一下C语言编程中的地址。 C 语言地址 如果程序中有变量var&am…...

学【Java多态】-- 写高质量代码

多态的实现条件 在java中要实现,必须要满足如下几个条件,缺一不可。 1.必须在继承体系下2.子类必须要对父类中的方法进行重写3.通过父类的引用调用冲写的方法。 想要真正的学好多态需要去学习一些前置知识,那我们直接开始吧! …...

【汇编】内存的读写与地址空间、寄存器及数据存储

文章目录 前言一、CPU对存储器的读写1.1 cpu对存储器的读写如何进行?1.2 演示 二、内存地址空间三、将各类存储器看作一个逻辑存储器——统一编址内存地址空间的分配方案 三、CPU的组成寄存器是CPU内部的信息存储单元通用寄存器--AX为例“横看成岭侧成峰“ 四、“字…...

DSP生成hex方法

以下使用两种方法生成的HEX文件,亲测可用 (1)万能法 不管.out文件是哪个版本CCS编译器生成的,只要用HEX2000.exe软件,翻译都可以使用。方法: hex2000 -romwidth 16 -memwidth 16 -i -o 20170817chuankou…...