<文件操作及常用的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 类的常用方法
**示例一:**关于路径的操作
| 返回值类型 | 方法 | 说明 |
|---|---|---|
| String | getParent() | 返回 File 对象的父目录文件路径 |
| String | getName() | 返回 File 对象的纯文件名称 |
| String | getPath() | 返回 File 对象的文件路径 |
| String | getAbsolutePath() | 返回 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对象的绝对路径}

**示例二:**文件的判断、创建
| 返回值 | 方法 | 说明 |
|---|---|---|
| boolean | exists() | 判断 File 对象锁描述的文件/目录是否真实存在 |
| boolean | isDirectory() | 判断 File 对象代表的文件是否是一个目录 |
| boolean | isFile() | 判断 File 对象代表的文件是否是普通文件 |
| boolean | createNewFile() | 根据 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());//文件被创建}

**示例三:**文件的删除
| 返回类型 | 方法 | 说明 |
|---|---|---|
| boolean | delete() | 根据 File 对象,删除该文件,成功删除后返回true |
| void | deleteOnExit() | 根据 File 对象,标注文件将被删除,删除操作会在JVM运行结束时才进行 |
public static void main(String[] args) throws IOException {File file = new File("d:/新建文件夹/text.txt");System.out.println(file.delete());file.deleteOnExit();}
**示例四:**创建目录
| 返回类型 | 方法 | 说明 |
|---|---|---|
| boolean | mkdir() | 创建 File 对象代表的目录 |
| boolean | mkdirs() | 创建 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));}

**示例六:**文件重命名
| 返回类型 | 方法 | 说明 |
|---|---|---|
| boolean | renameTo(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: …...
为什么流量卡禁区多,而手机卡却可以用呢?
很多朋友比较关心流量卡禁区的问题,当我们申请流量卡时,运营商都会在套餐详情中标明具体的禁发地区,这个时候很多朋友都会有疑问了,为什么流量卡不能用的地区,可以申请到手机卡呢。 想要清楚这个问题࿰…...
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领域历来专注于为具有挑战性的语言任务定义和设计系统,…...
大模型的全面回顾,看透大模型 | 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入门…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

