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

【Java系列】文件操作详解

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【Java系列专栏】【JaveEE学习专栏】
本专栏旨在分享学习JavaEE的一点学习心得,欢迎大家在评论区交流讨论💌

目录

  • 一、什么是文件
  • 二、Java中操作文件
  • 三、java.io.File类

一、什么是文件

文件是在硬盘上存储数据的一种方式。即数据是在硬盘上进行存储的,但是我们并不会直接去操作硬盘,而是通过文件的方式去访问数据的(操作系统将硬盘上的一些细节进行了封装,可以理解为操作系统通过文件系统来管理硬盘),作为开发者我们只需要了解文件相关的接口即可。

在这里插入图片描述
上图中的NTFS文件系统就是windows上的文件系统,这个文件系统背后一定有固定的格式来组织硬盘上的数据(即规定硬盘上的哪一块哪一块空间存储什么样什么样的数据)。而EXT4是Linux系统上的文件系统。

在这里插入图片描述

不同的文件系统管理硬盘的方式都是类似的,即都是通过目录 - 文件构成了N叉树的这样一个树形结构。

文件系统上的文件分为两大类:文本文件(存储的是字符,用记事本打开能够开懂)和二进制文件(存储的是二进制的数据,用记事本打开不能看懂)。

二、Java中操作文件

Java中通过java.io.File类来对一个文件(包括目录)进行抽象的描述。io即input输入和output输出,要站在CPU的角度去看待输入输出。通过FIle类创建出来的对象既可以对应到一个真实存在的文件,也可以对应到并不真实存在的文件。
在这里插入图片描述

三、java.io.File类

先来看File类的构造方法

在这里插入图片描述

  • File(File parent, String child):根据父目录 + 孩子文件路径,创建一个新的 File 实例。
  • File(String pathname):根据文件路径创建一个新的 File 实例,路径可以是绝对路径或者相对路径。此处参数的字符串是一个路径,此路径既可以是绝对路径也可以是相对路径。
  • File(String parent, String child):根据父目录 + 孩子文件路径,创建一个新的 File 实例,父目录用路径表示。

相关方法如下:

修饰符及返回值类型方法签名说明
StringgetParaent返回 File 对象的父目录文件路径
StringgetName返回 FIle 对象的纯文件名称
StringgetPath返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径
booleanisDirectory()判断 File 对象代表的文件是否是一个目录
booleanexists()判断 File 对象描述的文件是否真实存在
booleanisFile()判断 File 对象代表的文件是否是一个普通文件
booleancreateNewFile()根据File对象,自动创建一个空文件。成功创建后返 true
booleandelete()根据 File 对象,删除该文件。成功删除后返回 true
String[]list()返回 File 对象代表的目录下的所有文件名
File[]listFiles()返回File对象代表的目录下的所有文件,以 File 对象表示
booleanmkdir()创建File 对象代表的目录
booleanmkdirs()创建File对象代表的目录,如果必要,会创建中间目录
booleanrenameTo(File dest)进行文件改名,也可以视为我们平时的剪切、粘贴操作
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

请看举例:
在这里插入图片描述
在这里插入图片描述
示例2:
在这里插入图片描述
在这里插入图片描述
上图中通过getAbsolutePath()方法打印出来的目录是按照工作目录 + 当前目录来进行打印的(如果是在idea中运行程序的话,工作目录就是项目所在的目录,如果是在命令行中运行程序的话;工作目录就是命令行当前所在目录;如果程序运行在tomcat中则工作目录是在tomcat下的bin目录;所以工作目录会随着运行方式的不同而发生变化)。
示例三:
在这里插入图片描述
在这里插入图片描述
示例四:
在这里插入图片描述
在这里插入图片描述
注意:createNewFile方法是有可能抛出异常的,比如写入的路径是一个非法路径,比如我们要创建这个文件但是我们对文件所在的目录没有权限操作。
示例五(删除文件,等到程序运行结束的时候才对文件进行删除而非立即删除):
在这里插入图片描述
有时候我们会在程序运行的时候需要用到临时文件,等待程序结束的时候再把这个临时文件进行删除。
示例六(创建目录):
在这里插入图片描述
示例七(文件重命名和文件移动操作):
在这里插入图片描述

以上就是对文件系统的操作,都是通过File类来进行实现的。所以我们呢

本文到这里就结束了,希望友友们可以支持一下一键三连哈。嗯,就到这里吧,再见啦!!!

在这里插入图片描述

相关文章:

【Java系列】文件操作详解

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得,欢迎大家在评论区交流讨论💌 目录 …...

docker-compose 安装 RocketMq

目录 1、rocketMq 官网 2、工作流程 RocketMQ集群工作流程​ 1. 启动NameServer​ 2. 启动 Broker​ 3. 创建 Topic​...

【心得】PHP反序列化高级利用(phar|session)个人笔记

目录 ①phar反序列化 ②session反序列化 ①phar反序列化 phar 认为是java的jar包 calc.exe phar能干什么 多个php合并为独立压缩包,不解压就能执行里面的php文件,支持web服务器和命令行 phar协议 phar://xxx.phar $phar->setmetadata($h); m…...

MyBatisPlus之增删改查

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 MyBatisPlus之增删改查 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是Mybati…...

pytorch03:transforms常见数据增强操作

目录 一、数据增强二、transforms--Crop裁剪2.1 transforms.CenterCrop2.2 transforms.RandomCrop2.3 RandomResizedCrop2.4 FiveCrop和TenCrop 三、transforms—Flip翻转、旋转3.1RandomHorizontalFlip和RandomVerticalFlip3.2 RandomRotation 四、transforms —图像变换4.1 t…...

blob文件流前端显示pdf

首先请求需要修改 responseType: ‘blob’, 需要修改 请求头 {responseType: blob,url: url,method: get,}三种方法: 1.直接处理,在新页面打开 const blob new Blob([data],{ type:application/pdf }) let url window.URL.createObjectURL(blob) wi…...

Android 接入第三方数数科技平台

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、数数科技平台是什么?二、使用步骤1.集成SDK2. 初始化3. 发送事件和设置账号id4. 验证发送事件是否成功 小结 前言 一个成熟的App必然不可缺少对…...

LVM和磁盘配额

一:LVM概述: LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理。 能够在保持现有数据不变的情况下,动态调整磁盘容量,从而提高磁盘管理的灵活性 /boot 分区用于存放引导文件,不能基于LVM创建…...

uni-app uni-app内置组件

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...

C语言——格式说明符前面加修饰符

在C语言中,格式说明符前面可以添加一些修饰符来控制输出或输入的格式,主要包括宽度、精度、左对齐标志和前缀填充字符等。 1. 宽度(Width) %[width]type:这里的width是一个非负整数,表示输出字段的最小宽度…...

实验室(检验科)信息系统LIS源码,客户端:WPF+Windows Forms

lis系统源码,医学检验信息系统源码 LIS系统(Laboratory Information System)即实验室(检验科)信息系统,它将检验仪器付出的检验数据与相关信息接入计算机网络系统中,让患者、实验室、临床科室、…...

有道翻译web端 爬虫, js

以下内容写于2023-12-28, 原链接为:https://fanyi.youdao.com/index.html#/ 1 在输入框内输入hello world进行翻译,通过检查发出的网络请求可以看到翻译文字的http接口应该是: 2 复制下链接最后的路径,去js文件中搜索下: 可以看到这里是定义了一个函数B来做文字的翻译接口函数…...

uni-app API接口扩展组件(uni-ui)

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...

信息化和数字化的本质区别是什么?

信息化和数字化是两个概念的区别 它们有什么区别和联系呢?信息化:“业务数据化”,先让业务流程能被数据记录下来。信息化“业务数据化”。数字化:“数据业务化”,用已累积的业务数据去反哺优化业务流程。数字化“数据…...

发表《Nature》!美国研究团队发布可编程逻辑量子处理器

​(图片来源:网络) 近期,美国研究团队开发了一款可编程的逻辑量子处理器,并展示了可靠且可扩展的量子计算所需的关键要素,该成果已发表于《Nature》期刊(doi:10.1038/s41586-023-06…...

CISSP 第1章:实现安全治理的原则和策略

作者:nothinghappend 链接:https://zhuanlan.zhihu.com/p/669881930 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 CIA CIA 三性: 机密性:和数据泄露有关。完整性…...

【并发设计模式】聊聊线程本地存储模式如何实现的线程安全

前面两篇文章,通过两阶段终止的模式进行优雅关闭线程,利用数据不变性的方式保证数据安全,以及基于COW的模式,保证读数据的安全。本篇我们来简述下如果利用线程本地存储的方式保证线程安全。 首先一个大前提就是并发问题&#xff…...

边缘计算网关:重新定义物联网数据处理

随着物联网(IoT)设备的爆炸式增长,数据处理和分析的需求也在迅速增加。传统的数据处理方式,将所有数据传输到中心服务器进行处理,不仅增加了网络负担,还可能导致数据延迟和安全问题。因此,边缘计…...

Linux之下载安装

rpm包管理 rpm介绍 rpm用于互联网下载包的打包及安装工具,他包含在某些linux分发版本中。他生成具有.rpm扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的steup.exe。 rpm包的查询指令 查询已经安装…...

【HarmonyOS开发】案例-记账本开发

OpenHarmony最近一段时间,简直火的一塌糊度,学习OpenHarmony相关的技术栈也有一段时间了,做个记账本小应用,将所学知识点融合记录一下。 1、记账本涉及知识点 基础组件(Button、Select、Text、Span、Divider、Image&am…...

data-prep-kit:Python数据预处理工具包,自动化清洗、特征工程与流水线构建

1. 项目概述与核心价值最近在数据科学和机器学习社区里,一个名为data-prep-kit的项目开始引起不少同行的注意。如果你经常和数据打交道,无论是做数据分析、构建模型,还是搭建数据管道,你肯定对“数据准备”这个环节又爱又恨。爱的…...

量子退火误差缓解:经典阴影与局部虚拟纯化技术

1. 量子退火中的误差挑战与经典阴影方法量子退火(Quantum Annealing, QA)作为量子计算领域的重要算法,在优化问题求解中展现出独特优势。然而,实际硬件实现时面临的退相干问题严重制约了其计算精度。传统量子纠错方案需要大量物理…...

智能语义分块:chunkhound如何解决RAG应用中的文档处理难题

1. 项目概述:从“分块”到“猎犬”的智能进化如果你在数据处理的深海里游过泳,尤其是处理过那些动辄几十上百GB的文本、代码或日志文件,那你一定对“分块”(Chunking)这个概念又爱又恨。爱的是,它是我们处理…...

植物大战僵尸杂交版手机版最新版v3.16.1安卓2026最新下载分享

作为长期沉迷植物大战僵尸改版的老玩家,我近期完整体验了杂交版全新V3.16版本,从植物、关卡到平台适配,逐一实测验证。 整体来说,这是一次诚意满满的更新——既有新鲜玩法创新,又兼顾不同玩家需求。 下载链接&#x…...

嵌入式Linux动态引脚复用实战:RK3568 GPIO与I2C功能切换详解

1. 项目概述与核心价值在嵌入式Linux开发中,尤其是基于瑞芯微RK3568这类高度集成的SoC平台,引脚复用(Pin Mux)的管理是驱动开发者的基本功,也是从“会用”到“精通”的关键分水岭。很多朋友在初次接触时,往…...

SPI驱动NeoPixel:硬件时序优化与跨平台控制方案

1. 项目概述:当NeoPixel遇上SPI,一个关于时序的优雅解法玩过智能LED,比如Adafruit的NeoPixel或者国内常见的WS2812B灯带的朋友,大概都体会过那种又爱又恨的感觉。爱的是它单线控制、色彩绚烂,恨的是那娇贵到令人头疼的…...

Kleiber:简化多架构Docker镜像构建与发布的自动化工具

1. 项目概述与核心价值最近在整理自己的开发工具链时,又翻出了devgap/kleiber这个项目,它在我日常的容器化开发工作流中扮演了一个相当关键但又不那么起眼的角色。简单来说,Kleiber 是一个 Docker 镜像的构建和发布自动化工具,但它…...

LizzieYzy围棋AI分析平台:从棋谱复盘到AI教练的完整指南

LizzieYzy围棋AI分析平台:从棋谱复盘到AI教练的完整指南 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy 围棋作为世界上最复杂的棋类游戏之一,其学习曲线一直被认为是陡峭而…...

VCF 9.1 实验室部署 ESX 配置变通方案

以下配置适用于资源受限环境、非生产用途,仅用于功能测试与学习目的。一、物理 ESX 9.1 主机1. vSAN 压缩算法(CPU 受限环境)VCF 9.1 默认从 LZ4 改为 Zstd,压缩率更高但 CPU 占用更高。切回 LZ4(无需重启)…...

Revelation光影包:物理渲染与启发式算法的视觉革命

Revelation光影包:物理渲染与启发式算法的视觉革命 【免费下载链接】Revelation An explorative shaderpack for Minecraft: Java Edition 项目地址: https://gitcode.com/gh_mirrors/re/Revelation Revelation不仅仅是一个Minecraft光影包——它是基于物理渲…...