总结Java文件操作

news2024/9/30 9:37:07

文件:文件是一个广义的概念

  • 在操作系统中文件可以指硬件资源和软件资源为文件;
  • 也可以指存储在硬盘上的文件,文件夹也是文件;文件夹是通俗的叫法,专业的叫法是目录;

查看我们的硬盘,我们可以发现文件在硬盘上的存储结构是树型的存储结构,文件夹里可以由文件夹和文件,文件夹里又可以继续嵌套文件和文件夹,不难发现是一个树型结构,n叉树;

此电脑 就是树的

路径

有这么多文件,如何去找到,确定我们要找的文件?文件系统为我们提供了 路径;路径可以分为绝对路径相对路径

  • 绝对路径:从盘符开始,一直到文件的路径就是绝对路径;
  • 相对路径:从当前的目录开始(工作目录),直到文件的路径就是相对路径;

有人要问,那为什么我们平常看到的路径为什么都是从盘符开始的,而不是此电脑开始的呢?

  • 这是因为所有的文件都是此电脑开始的,所以文件系统省略了此电脑作为路径

D:\WeChat\WeChat.exe 这就是绝对路径,从盘符开始

如果当前的路径是D:\WeChat,那么WeChat.exe 的相对路径就是 ./WeChat.exe

还有另外一种情况,我们当前进入了Wechat里的另一个文件夹,当前的目录是D:\WeChat\aaa,那我们如何确定WeChat.exe呢?  ../WeChat.exe就是了

相对路径的一些注意点:

  • 相对路径中, ..表示上一级目录,.表示当前目录;
  • 相对路径还可以是任意路径;
  • 相对路径开头的./可以去掉,但是不建议去掉;

细心的应该有看到我上面表示路径的分隔符有用到正斜杠 /反斜杠 \ ,那是因为什么呢?

  • 这就不得不说到微软在开发DOS的时候了,当时市面上主流还是Unix系统,而Unix系统就是用正斜杠来当作分隔符的,刚开始微软也是想用的,但是在发布之际就改成反斜杠,发布之后受到了很多反对,后面就改成了正反斜杆都支持,所以如今能够在微软的操作系统中正反斜杆都能够使用,当然在编写代码的时候,还是建议养成使用正斜杠的习惯,因为使用反斜杠,你还得用再加一个反斜杠,防止和其他字符变成其他转义字符。

文件的操作

文件按照不同的分类可以分为很多种类,这里主要讲跟编写代码相关的,分为文本文件二进制文件

从存储的内容来看,文本文件存的是合法的字符,而二进制文件存的可以是任何内容,像照片,视频,音乐......;

 一个最简单粗暴的分辨办法,打开记事本,讲文件拖入记事本打开,如果不是乱码,就是文本文件,如果是乱码,就是二进制文件;

这是打开一个应用程序,乱码,二进制文件;

Java操作文件使用File这个类,这个类来自  java.io包,跟io有关;下面主要分享这个包中用到的主要构造方法和方法;

构造方法
File(String pathname)
一个字符串作为路径,可以是绝对路径也可以是相对路径
File(String parent, String child) 
一个字符串作为父目录,一个字符串作为子目录,合起来是一个文件的路径
 File(File parent, String child)
一个文件变量和一个字符串合起来的一个文件路径

构造方法中最常用的第一个,最直接明了,可以是绝对路径也可以是相对路径,如果是相对路径,你要明确自己的当前目录(工作目录); 

方法
返回值的类型方法签名说明
StringgetName()返会File对象的纯文件名
StringegetParent()返回表示File对象的父目录的字符串
StringgetPath()返回表示File对象完整路劲的字符串
StringgetAbsolutePath()返回File对象的绝对路径
StringgetCanonicalPath()返回File对象修饰过的绝对路径
 booleanexists()判断File对象是否真实存在
booleanisDirectory()判断File对象是不是一个目录
booleanisFile()判断File对象是不是一个普通文件
booleancreateNewFile()根据File对象创建一个空文件,创建成功返回true,存在返回false;
booleandelete()根据File对象删除该文件
voiddeleteOnExit()根据File对象标记该文件要删除,直到该程序结束就会删除该文件
String[]list()返回目录下所有文件的文件名
File[]listFiles()

返回该目录下的所有文件的文件名,以File对象返回

booleanmkdir()创建File对象表示的目录
booleanmkdirs()创建File对象表示的目录,即使是可能要连续创建多个目录
booleanrenameTo(File dest)根据File对象重新以dest命名,相当于创建,复制,删除为一体;
booleancanRead()判断该用户有没有可以读这个文件的权限
booleancanWrite()

判断该用户有没有可以写这个文件的权

代码演示

 打开文件

对于File对象用绝对路径来说,无论是哪种获取获取的方法,都是一样的;

当时对于用相对路径表示,就会有所不同了;

这是我当前的工作目录:

可以看到获取路径的方法返回的都是以相对路径判断的,以获取修饰过的字符串就是会把无所谓的./去掉;

值得一提的是上面的路径代表的文件无论是否真实,即使文件不存在也会根据你提供的路径返回值;

操作文件的主要方法

新建文件,删除文件,修改文件名字,查找文件.....,只是介绍我认为需要注意的,简单的不做多赘述; 

listFiles()

返回指定File文件下所有文件的文件名(完整路径),不包括目录里面的文件;像src目录里面还有很多文件;

如果File对象不存在,会报错;

createNewFile()

创建文件;

说明: 由于第三个代码报错,我重新测试了第四个代码,依旧是报一样的错误,说明创建文件不能额跨未创建的目录去创建文件;根据查看创建的文件可以看到,只能创建普通文件,不能创建文件夹,已经存在相同的文件,会返回一个false;

deleteOnExit() 

根据File对象,标注⽂件将被删除,删除动作会到JVM运⾏结束时才会进行

说明:在等待jvm结束的过程中,观察该文件依旧存在,直到jvm结束,该文件才被删除;

mkdir() 

注意:硬盘不提前创建相关的文件文件夹,除了必要用到的工作目录;

观察不难看出,mkdir最多只能创建一个目录,超过一个不会创建,且不管你的File对象的文件夹名字会不会是一个普通文件;

mkdirs()

该方法与mkdir唯一不同的就是它可以创建超过一个文件夹,还是相同代码(上面代码创建的文件已经删除)

区别一目了然,mkdirs无论需要创建多少级目录,都是能够创建成功的;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言分析数据在内存中的存储一:(整形在内存中的存储)

数据类型介绍 我们知道C语言有很多内置类型: char //字符数据类型 1 个字节short //短整型 2 个字节int //整形 4 个字节long //长整形 4 个字节long long //更长的整形 8 个字节float //单精度浮点数 4 个字节dou…

Linux学习记录(十三)----信号

文章目录 6.信号1.信号的发送(发送信号进程)kill:raise:alarm : 2.信号的接收3.信号的处理信号父子进程间通信 7.信号灯(semaphore)创建信号灯函数控制信号灯函数PV操作 声明:本人撰写的为学习笔记内容来源于网络,如有侵权联系删除…

SQL Server中如何自动抓取阻塞

背景 当发数据库生阻塞时,可以通过SQL语句来获取当前阻塞的会话情况,可以得到下面的信息 说明:会话55阻塞了会话53。两个会话都执行了update test set fid10 where fid0。 但我们也经常碰到客户生产环境出现阻塞,由于不会抓取或者…

YOLOv8实现任意目录下命令行训练

问题 当你使用YOLOv8命令行训练模型的时候,如果当前执行的目录下没有相关的预训练模型文件,YOLOv8就会自动下载模型权重文件。这个是一个正常操作,但是你还会发现,当你在参数model中指定已有的,在其他目录下的预训练模…

实际案例:某日化集团主数据建设项目

一、建设背景1. 背景分析当前,该日化企业集团的主数据尚处于分散状态,分布于各业务系统中,缺乏一套专业的主数据管理系统进行统一管理。因此,数据无法在全集团范围内共享使用,且在业务端到端的流程拉通时,数…

WPS关闭后,进程依然在后台运行的解决办法

问题 wps启动后 在启动wps后,什么都不做,打开进程管理器,发现居然运行了3个wps进程: win10只会显示wps进程: win11显示比较准确: 关闭后 在关闭wps,再去任务管理器查看,发现在…

游戏开发设计模式之策略模式

目录 策略模式在游戏开发中的具体应用案例有哪些? 如何在Unity中实现策略模式以优化角色行为和AI策略? 策略模式与其他设计模式(如观察者模式、状态模式)在游戏开发中的比较优势是什么? 策略模式的优势 观察者模式…

基于SpringBoot的闲一品交易平台

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:SpringBoot框架 Java技术 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 管理员…

【手撕OJ题】——160. 相交链表

目录 🕒 题目⌛ 方法① - 遍历记录链表长度⌛ 方法② - 双指针 🕒 题目 🔎 160. 相交链表【难度:简单🟢】 🔎 面试题 02.07. 链表相交 🔎 剑指 Offer 52. 两个链表的第一个公共节点 给你两个单…

hadoop集成spark(spark on yarn)

文章目录 hadoop集成spark(spark on yarn)下载spark软件包spark文件设置spark-env.shworkers 环境变量设置发送spark到其余机器启动spark hadoop集成spark(spark on yarn) 在hadoop搭建完成的前提下,集成spark&#x…

【面试题系列Vue02】Vue Router 路由都有哪些模式?各模式之间有什么区别?

官方解析 Vue Router 路由有三种模式: hash 模式:使⽤ URL 中的 hash(即 # 后面的内容)来作为路由路径。 在这种模式下,页面不会重新加载,只会更新 hash 值,并触发路由变化,从而渲…

c语言杂谈系列:模拟虚函数

从整体来看&#xff0c;笔者的做法与之前的模拟多态十分相似&#xff0c;毕竟c多态的实现与虚函数密切相关 废话少说&#xff0c;see my code&#xff1a; kernel.c#include "kernel.h" #include <stdio.h>void shape_draw(struct shape_t* obj) {/* Call dr…

气膜粮仓:卓越的抗风雪能力与高性能材料—轻空间

在粮食储存领域&#xff0c;气膜粮仓以其卓越的抗风雪能力和高性能材料成为了现代农业的首选。其独特的设计和先进的材料使其在各种极端天气条件下依然能够保证粮食的安全和品质。 强抗风雪能力&#xff0c;保障粮仓安全 气膜粮仓采用了创新的结构设计&#xff0c;能够有效抵御…

Selenium + Python 自动化测试19(补充-读取各种文件数据操作)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 上一篇我们讨论了数据驱动测试中如何完成重复的测试实例&#xff0c;今天我们补充一些读取各种文件的方法。 本篇文章我们讨论一下如何使用读取txt、CSV、Excel文件&#xff0…

burpsuite xssValidator插件(xss插件)

安装 1. 商城安装插件 2. 安装环境 Download PhantomJShttps://phantomjs.org/download.htmlGitHub - NetSPI/xssValidator: This is a burp intruder extender that is designed for automation and validation of XSS

halcon1

Halcon安装&#xff1a;halcon介绍&#xff1a; 德国MVtec公司开发的一套完善的标准的机器视觉算法包。底层功能算法多&#xff0c;运算性能快。halcon不能提供相应的界面编程需求&#xff0c;需要和vs一起才能构成一套完整软件。 软件界面 halcon数据类型 Halcon的数据类型主…

Hugo博客搭建

Hugo 构建 Hugo 安装 下载 安装包hugo version 查看是否安装成功 生成站点基础框架 进入自己指定文件夹下执行 hugo new site solejay-blog创建仓库 cd solejay-blog git init主题配置 进入 Hugo 主题页面 选择主题并下载 个人喜欢的主题&#xff1a;meme、newsroom、gal…

mac安装java17(jdk17)

1. 下载jdk17 官网下载&#xff1a;https://www.oracle.com/java/technologies/downloads 2. 直接安装 安装完后目录会存放在下面目录下 /Library/Java/JavaVirtualMachines 111111deMBP JavaVirtualMachines % ls jdk-11.0.227 jdk-17.jdk 3. 如果你已经安装过java&#…

【MobaXterm】查找输出结果的关键字

要求&#xff1a; 在MobaXterm终端的输出结果 查找关键字 解决&#xff1a; 菜单栏终端->在终端中查找 Terminal -> Find in terminal

智慧水务项目(七)vscode 远程连接ubuntu 20.04 服务器,调试pyscada,踩坑多多

一、说明 以前用过pycharm&#xff0c;远程连接还可以&#xff0c;但是vscode用以前还可以&#xff0c;就用它开发python了&#xff0c;想搞个远程&#xff0c;源码直接放服务器上&#xff0c;能远程调试&#xff0c;其实也很方便的&#xff0c;结果第一次还成功了&#xff0c;…