文件操作(File类)

news2024/11/23 12:44:52

在这里插入图片描述

文章目录

  • 一、初识文件
  • 二、File类
    • 构造方法
    • 常用方法

一、初识文件

我们目前是如何存储数据的?弊端是什么?

int a = 1;
int[] arr = new int[5];

在这里插入图片描述
我们这些数据是在内存中存储的,是不能够长久保存的。

那么,我们的计算机当中有没有一块硬件可以长久存储数据的?
磁盘中的数据形式就是文件,文件是数据的载体。

我们这个文件(File),在计算机中有很多不同的意义。
狭义的文件: 就是我们硬盘上的文件和目录(文件夹)
广义的文件: 泛指我们计算机当中的很多软硬件资源,操作系统把许多软硬件资源抽象成了文件,按照文件的方式来进行统一管理。
我们这里讨论的是侠义的文件。
在这里插入图片描述
我们的每个文件,在我们的硬盘上都有一个具体的"路径",比如我们这里的D:\maven,我们这里可以用/来分割不同的目录级别。
在这里插入图片描述
就可以表示为: D:\maven\apache-maven-3.6.1\maven_repository

细心的同学可以发现,我们在路径的时候,使用/或者\划分目录级别都是可以的,但是更建议大家使用 / ,因为 \ 容易出现转义字符。
比如: d:\tbd,我们就会把\t当成一个转义字符了,而不是\。

我们的文件路径这里,有两种表示路径的方法:
1.绝对路径:也就是带有C: D: 盘符开头的路径
2.相对路径:以当前所在的目录为基准,以 . 或者 … 开头(, 有时可以省略),找到指令路径。
在这里插入图片描述
比如,我们现在的工作目录是:D:\maven,我们想定位apache-maven-3.6.1这个目录,就可以表示./apache-maven-3.6.1(./就可以表示当前目录。

在这里插入图片描述
如果我们在刚才的工作目录下想要访问该目录,就可以表示为:
./apache-maven-3.6.1/maven_repository
在这里插入图片描述
如果,在刚才的工作目录下,我们想要访问navicat目录,相对路径写作为:…/navicat(…表示当前目录的上级目录)

在我们日常使用的各种各样的文件:word,execl,图片,音频,视频等待,可以分为两大类:
1.文本文件(存放的是文本,字符串),这个文本文件里的数据,一定是合法的字符,都是指定字符集编码表里的数据。
2.二进制文件(存放的是二进制数据),可以存放任何想存放的数据。
我们可以通过一个很简单的方式来判断是什么类型的文件,直接用记事本的方式打开文件。
在这里插入图片描述
这里我用记事本打开了一个word文件,如果出现的是这种乱码就证明是二进制文件,如果不是乱码就是文本文件。

二、File类

我们想要操作文件,得经过一些步骤:

  1. 先要定位文件:File类可以定位文件,进行删除,获取文件本身信息等操作。但是不能读写文件
  2. 读写文件数据:IO流技术可以对硬盘中的文件进行读写操作。

我们先来学习第一步的操作,学习一下File类

构造方法

方法作用
File(File parent, String child)根据父文件 + 孩子文件路径,创建文件
File(String path name)根据一个文件路径(绝对或者相对路径都可以)去创建文件
File(String parent, String child)根据父目录(路径) + 孩子路径,创建文件
public static void main(String[] args) {
        File file = new File("D:/maven");
    }

这里我们就传入了一个决定路径,定位到了maven目录。

常用方法

返回值类型方法作用
StringgetParent()返回File对象父目录文件路径
StringgetName()返回File对象文件名
StringgetPath()返回File对象文件路径
StringgetAbsolutePath()返回File对象的绝对路径
StringgetCanonicalPath()返回File对象修饰过的绝对路径
booleanexists()判断File对象代表的文件是否真实存在
booleanisDirectory()判断File对象代表的文件是否是一个目录
booleanisFile()判断File对象代表的文件是否是一个普通文件
booleancreateNewFile()自动创建一个新文件,创建成功返回true
booleandelete()根据File对象删除该文件,删除成功返回true
voiddeleteOnExist()根据File对象,标注该文件将被删除,当JVM运行结束才会执行
String[]list()返回File对象目录下所有的文件名
File[]listFiles()返回File对象目录下的所有文件,以File对象的形式表示
booleanmkdir()创建File对象表示的目录
booleanmkdirs()创建File对象表示的多级目录
booleanrenameTo(File dest)对文件进行改名
booleancanRead()判断用户是否对文件有可读权限
booleancanWrite()判断用户是否对文件有可写权限

我们来简单使用一下这些方法
在这里插入图片描述

public static void main(String[] args) throws IOException {
        File file = new File("D:/zd.txt");
        System.out.println(file.getName());
        System.out.println(file.getParent());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }

在这里插入图片描述
我们在使用IDEA的时候,我们所处在项目所在的工作目录下。
在这里插入图片描述

public static void main(String[] args) throws IOException {
        File file = new File("./zd.txt");
        System.out.println(file.getName());
        System.out.println(file.getParent());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }

在这里插入图片描述
我们的IDEA没有这个文件,我们来创建一下。

public static void main(String[] args) throws IOException {
        File file = new File("./zd.txt");
        file.createNewFile();
        System.out.println(file.exists());
        System.out.println(file.isFile());
        System.out.println(file.isDirectory());
    }

在这里插入图片描述
在这里插入图片描述
我们发现,我们已经成功的创建了一个文件,但是可能有的同学进行了刚才的操作之后,这里没有显示该文件。
在这里插入图片描述
我们可以右键项目,然后选择Reload from Disk刷新一下。
然后我们也可以试着删除一下这个文件。

public static void main(String[] args) {
        File file = new File("./zd.txt");
        file.delete();
        System.out.println(file.exists());
    }

在这里插入图片描述
我们可以发现我们已经成功删除,同时标准库还为我们提供了deleteOnExit程序退出的时候,自动删除,这一功能,在我们使用"临时文件"的时候需要用到。
在这里插入图片描述
比如我们打开一个DOCX文档的时候,就会生成一个临时文件,当我们关闭文档的时候,文件自动删除了,至于为什么有这个操作也很好理解,这个临时文件保存了我们实时编辑的内容(尤其是没有保存的内容),防止我们编辑了很多内容,突然停电了,然后没有保存,但由于临时文件的存在,下次我们启动DOCX文档时,就会提醒我们是否要恢复之前的编辑。
我们这里的临时文件就可以使用deleteOnExist的方式来删除了。

public static void main(String[] args) {
        File file = new File("./test");
        file.mkdir();
        System.out.println(file.exists());
        System.out.println(file.isFile());
        System.out.println(file.isDirectory());
    }

在这里插入图片描述
在这里插入图片描述
我们就成功的创建了一个目录,如果我们想创建多级目录的话,就得使用mkdirs了,我们的mkdir只能创建单级目录

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

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

相关文章

PostgreSQL(一)Windows安装

目录一、下载二、安装PostgreSQL三、安装StackBuilder四、打开PostgreSQL管理工具pgAdmin五、打开命令行一、下载 下载地址: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 下载后安装包如下: 二、安装PostgreSQL 双击打开安…

DataX使用入门

DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS 等各种异构数据…

Java 日志框架 Log4J

文章目录引言什么是Log4JLog4J三大组件Log4J日志级别Log4J基本使用自定义配置文件Appender示例FileAppenderDailyRollingFileAppenderRollingFileAppenderJDBCAppender自定义Logger引言 Java 日志框架 JUL 在这篇文章中已经向大家介绍了我们为什么要使用日志文件、常见的日志…

张力调节(精密调节气阀应用)

跳舞轮对应张力调节范围,我们可以通过改变气缸的气压方式间接改变,张力跳舞轮在收放卷闭环控制上的详细应用,可以参看下面的文章链接,这里我们主要讨论精密可调气阀的模拟量编程问题。 PLC张力控制(开环闭环算法分析&…

【实践向】当移除了三级缓存……

本文会手把手带你一起把使用二级缓存替换三级缓存,看下移除了三级缓存,只有二级缓存会出什么问题,用实践回答那个被问了无数次的“为什么要有三级缓存?”以及“二级缓存解决不了循环依赖问题吗?”等类似问题(&#xff…

“Flash配置不当漏洞”详解

危害 可被用来进行跨域访问,可能会导致“跨站点伪造请求”或“跨站点跟踪”(“跨站点脚本编制”的变体)之类的攻击,从而导致其它用户的信息被非法读取。 导致不受信任的第三方域的flash也能访问当前域的资源,绕过同源策…

一、构建自己的图像分类数据集(Datawhale组队学习)

文章目录安装配置环境图像采集采集函数爬取一类图片爬取多类图片一些参考类别的关键词制作图像分类数据集的注意事项删除多余文件删除系统自动生成的多余文件删除gif格式的图像文件删除非三通道的图像统计图像尺寸、比例分布采用的数据集统计数据集的基本信息可视化图像尺寸分布…

Embarcadero Dev-C++第一次使用注意事项

Embarcadero Dev-C第一次使用注意事项 Embarcadero Dev-C简介 2000年左右,Bloodshed software开发了Dev-C ,提供轻量、免费、开源的C/CIDE。Dev-C是最适合初学C语言的IDE之一,但至2015年Dev C5.11,停止了更新维护了。 后来&…

springboot,vue电影院售票系统

开发工具:IDEA服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7系统用户前台和管理后台两部分,项目采用前后端分离前端技术:vue elementUI服务端技术:springbootmybatis项目功…

pom文件中自定义的repository不生效

问题描述 对应的pom中依赖获取失败 pom文件依赖配置如下: <dependencies><dependency><groupId>it.geosolutions</groupId><artifactId>geoserver-manager</artifactId><version>1.7.0</version><exclusions><excl…

verilog学习笔记- 15)动态数码管显示实验

目录 简介&#xff1a; 实验任务&#xff1a; 硬件设计&#xff1a; 程序设计&#xff1a; 下载验证&#xff1a; 简介&#xff1a; 由于一般的静态驱动操作虽然方便&#xff0c;但占用的 I/0 口较多&#xff0c;例如要驱动6 位 8 段数码管&#xff0c;以静态驱动方式让数…

值得收藏的30道Python基础练手题(附详解)

今天给大家分享30道Python练习题&#xff0c;建议大家先独立思考一下解题思路&#xff0c;再查看答案。 1. 已知一个字符串为 “hello_world_JMzz”&#xff0c;如何得到一个队列 [“hello”,”world”,”JMzz”] &#xff1f; 使用 split 函数&#xff0c;分割字符串&…

ESP8266 ArduinoIDE 闪存文件操作系统

一、闪存文件系统基本操作 esp8266 的采用 SPIFFS 嵌入式文件系统&#xff0c;在内部 Flash 为 4M&#xff0c;其中 1M 用于存储程序&#xff0c;其他的空间有一部分用于系统&#xff0c;3M 中剩下的大部分空间可以用来存放文件。 其中这个空间大小是可以自定义的&#xff0c;…

【Node.js实战】一文带你开发博客项目之安全(sql注入、xss攻击、md5加密算法)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;也会涉及到服务端 &#x1f4c3;个人状态&#xff1a; 在校大学生一枚&#xff0c;已拿多个前端 offer&#xff08;秋招&#xff09; &#x1f680;未…

Netty进阶

三. Netty 进阶 1. 粘包与半包 1.1 粘包现象 服务端代码 public class HelloWorldServer {static final Logger log LoggerFactory.getLogger(HelloWorldServer.class);void start() {NioEventLoopGroup boss new NioEventLoopGroup(1);NioEventLoopGroup worker new Ni…

想要全面了解DevOps,从概念、实现相关工具到如何落地,看这篇就够了

我们总是在提DevOps&#xff0c;敏捷管理&#xff0c;但大家未必真的明白什么是DevOps。本文是将向大家介绍到底什么是DevOps&#xff0c;DevOps的初衷到底是为了解决什么问题&#xff1f;它能够如何实现&#xff1f;能够带来哪些价值&#xff1f;来让大家对DevOps有一个全面的…

Vscode++Opencv+Anaconda+Python安装教程

最近在学习opencv的时候vscode一直报这个错&#xff1a; Import “cv2” could not be resolved Pylance (reportMissingImports) 但是在Jupyter上面可以运行&#xff0c;一直没找到解决方法&#xff0c;无奈只好重装。 一&#xff1a;安装AnacondaPython 进入Anaconda官网 w…

计网必会:封装、协议、解封装

文章目录解释什么是封装什么是协议解封装是啥封装过程拓展知识需要了解解释 什么是封装 封装就是给初始的数据增加“数据”&#xff0c;让原始数据的信息量扩大&#xff0c;方便层与层间的交流&#xff0c;所谓封装&#xff0c;就是包装的意思&#xff0c;中文博大精深哈哈哈…

03.指针的进阶2.练习题(重点)

1.指针和数组笔试题解析 //1. sizeof(数组名)&#xff0c;数组名表示整个数组。计算的是整个数组的大小,单位是字节 //2. &数组名&#xff0c;数组名表示整个数组。取出的是整个数组的地址 //除此之外&#xff0c;所有的数组名都是数组首元素的地址 EG1:整型 int main…

爬虫学习笔记

目录一、Python基础知识回顾1、pip下载源2、pycharm设置作者信息3、python注释4、变量4.1 类型转换二、Urllib使用一、Python基础知识回顾 1、pip下载源 pip install python包默认是从 https://files.pythonhosted.org/ 网站&#xff08;国外网站&#xff09;上下载&#xff…