【Java】文件I/O-文件系统操作

导读

在文件I/O这一节的知识里,对文件的操作主要分为两大类:

☑️针对文件系统进行的操作

☑️针对文件内容进行的操作

针对文件系统进行的操作主要是对Java中的File类进行操作。这篇文章里,博主就来带大家看看Java中针对文件系统的一些常用操作😼

前置知识

如果还不了解文件路径,博主建议先了解一些关于文件路径的简单知识,🔗链接如下

🔗文件路径-绝对路径与相对路径

操作说明表

下表中列出了常见的针对文件系统的操作,有需要的同学可以自行对照使用⬇️

在表后,博主将对一些重要操作进行代码演示和说明📘由于博主使用的是Mac系统🍎,下面的演示都会基于Mac系统🍎进行

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

重要操作说明

1、File类的创建

方法名

说明

File(File parent, String child)

根据⽗⽬录 + 孩⼦⽂件路径,创建⼀个新的 File 实例

File(String pathname) 

根据⽂件路径创建⼀个新的 File 实例,路径可以是绝

对路径或者相对路径

File(String parent, String child)

根据⽗⽬录 + 孩⼦⽂件路径,创建⼀个新的 File 实

例,⽗⽬录⽤路径表⽰

我们最常使用第二个方法

File file = new File("/Users/liuwenwen/Desktop/test.txt");

2、文件路径操作 

了解 文件路径-绝对路径与相对路径后,给出下面操作⬇️

返回类型方法名说明
StringgetParent()返回 File 对象的父目录文件路径
StringgetName()返回 File 对象的纯文件名称
StringgetPath()返回 File 对象的文件路径
StringgetAbsolutePath()返回 File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径

先按照绝对路径的方式来写

import java.io.File;
import java.io.IOException;public class Main {public static void main(String[] args) throws IOException {File file = new File("/Users/liuwenwen/Desktop//test.txt");System.out.println(file.getParent());System.out.println(file.getName());System.out.println(file.getPath());System.out.println(file.getAbsolutePath());System.out.println(file.getCanonicalPath());}
}

 运行结果如下

此时返回的路径都是绝对路径

看不出getAbsolutePath()与getCanonicalPath()的区别

将绝对路径改为相对路径后

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

获得的结果是

可以看到此时返回的是相对路径

getAbsolutePath()返回的结果即是当前所在路径(IDE项目路径)+ 相对路径

而getCanonicalPath()返回的则是getAbsolutePath()简化版

3、list()与listFiles()

 · list()

运行下面一段代码

import java.io.File;
import java.util.Arrays;public class demo3 {public static void main(String[] args) {File file = new File("/Users/liuwenwen/Desktop");String[] files = file.list();System.out.println(files);System.out.println(Arrays.toString(files));}
}

得到结果是

直接打印数组,得到的是哈希值。因此我们需要用到 Arrays.toString()方法,这样才能打印出我们所要的数组内容

 · listFiles()

运行listFiles()方法

import java.io.File;
import java.util.Arrays;public class demo3 {public static void main(String[] args) {File file = new File("/Users/liuwenwen/Desktop");File[] files = file.listFiles();System.out.println(Arrays.toString(files));}
}

得到结果 

对比

将两组结果进行对比

[杂, .DS_Store, 写作相关, .localized, 女性主义, test.txt, 学习]
[/Users/liuwenwen/Desktop/杂, /Users/liuwenwen/Desktop/.DS_Store, /Users/liuwenwen/Desktop/写作相关, /Users/liuwenwen/Desktop/.localized, /Users/liuwenwen/Desktop/女性主义, /Users/liuwenwen/Desktop/test.txt, /Users/liuwenwen/Desktop/学习]

可以发现,list()获得的是文件名,listFiles()获得的是文件路径名

4、创建目录 

mkdir()

创建目录操作其实就是创建文件夹操作

运行下面代码

import java.io.File;public class demo4 {public static void main(String[] args) {File file = new File("/Users/liuwenwen/Desktop/abc");System.out.println(file.mkdir());}
}

桌面上多出了abc文件夹,创建目录成功!

mkdirs()

如果要创建多级目录,我们则使用mkdirs()方法

import java.io.File;public class demo4 {public static void main(String[] args) {File file = new File("/Users/liuwenwen/Desktop/aaa/bbb/ccc");System.out.println(file.mkdirs());}
}

创建结果如图 

 5、重命名

将test.txt文件重命名为test2.txt文件

import java.io.File;public class demo5 {public static void main(String[] args) {File srcFile = new File("/Users/liuwenwen/Desktop/test.txt");File desFile = new File("/Users/liuwenwen/Desktop/test2.txt");System.out.println(srcFile.renameTo(desFile));}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts修改tooltip默认的圆点图标为其他样式

业务需求,默认是圆点,需要把线的由圆点改为线 红色线是理论,点是历史理论,绿色线是实际, 点是历史实际,在series里的顺序也是这样排的。 打印出来的params里的marker就是圆点,改这段代码就可以了…

电脑格式化了怎么恢复原来的数据?您可以这样做

电脑是我们日常生活和工作中不可或缺的工具,然而,在一些情况下我们可能需要进行电脑格式化,比如为了清理系统垃圾、解决系统故障等。然而,格式化会导致所有数据被删除,给用户带来不便和困扰。本文将介绍电脑格式化了怎…

开发知识点-CSS样式

CSS样式 fontCSS 外边距 —— 围绕在元素边框的空白区域# linear-gradient() ——创建一个线性渐变的 "图像"# transform ——旋转 元素![在这里插入图片描述](https://img-blog.csdnimg.cn/20191204100321698.png)# rotate() [旋转] # 边框 (border) —— 围绕元素内…

nnUNet保姆级使用教程!从环境配置到训练与推理(新手必看)

文章目录 写在前面nnUNet是什么?一、配置虚拟环境二、安装nnUNet框架1.安装nnUNet这一步我遇到的两个问题: 2.安装隐藏层hiddenlayer(可选) 三、数据集准备nnUNet对于你要训练的数据是有严格要求的,这第一点就体现在我…

第三方发起备份的ORA-00245问题

文章目录 前言一、信息确认共享目录位置控制文件快照位置节点1节点2 二、RAC修改snapshot controlfile 参数三、字典表确认以及测试 前言 在使用 AnyBackup 管理控制台发起 Oracle RAC 数据库备份后,在任务历史记录 > 执行输出中显示如下错误信息: c…

深度视觉目标跟踪进展综述

1 引言 目标跟踪旨在基于初始帧中指定的感兴趣目标( 一般用矩形框表示) ,在后续帧中对该目标进行持续的定位。 基于深度学习的跟踪算法,采用的框架包括相关滤波器、分类式网络、双路网络等。 处理跟踪任务的角度,分为基于匹配思路的双路网…

RFID资产管理系统全功能详解!高效管理从这里开始!

在现代商业环境中,RFID资产管理系统正成为企业管理不可或缺的先进工具。现代企业管理正处于数字化的浪潮中,而RFID资产管理系统正是这场浪潮中的一颗璀璨明珠。在这篇文章中,我们将全方位解析RFID资产管理系统的功能,助您深入了解…

分析:为什么有些pdf打开之后无法编辑?

pdf文件大家应该都经常接触,但是不知道大家会遇到这种情况:有些PDF文件打开之后无法编辑?是什么原因呢?今天我们来分析一下都是那些原因导致的。 首先我们可以考虑一下,PDF文件中的内容是否是图片,如果确认…

Linux——vim编辑文件时——.swp文件解决方案

test.cpp样例 当我们vim test.cpp进入编辑文件。 却忘记了保存退出 再次进入就会出现一下画面 当你摁下Enter键位 出现以下几个选项 O——是只读不写 E——是正常打开文件但不会载入磁盘内容 R——覆盖——是加载存储磁盘的文件(当我们忘记保存时,系统会自动帮我…

网络入门---网络的大致了解

目录标题 网络发展的简单认识协议作用的理解协议的本质什么是协议分层网络通信所面对的问题OSI七层模型TCP/IP模型协议报头的理解局域网通信局域网通信基本原理报头的问题局域网的特点跨网的网络链接如何查看mac地址 网络发展的简单认识 通过之前的学习我们知道计算机是给人提…

基于STM32单片机的智能家居系统设计(论文+源码)

1.系统设计 基于STM32单片机的智能家居系统设计与实现的具体任务: (1)可以实现风扇、窗帘、空调、灯光的开关控制; (2)具有语音识别功能,可以通过语音控制家电; (3&a…

JS:获取当前日期是本年度的第几周

问题 根据当前的日期(比如年月日),来得到当前日期属于本年度的第几周 解决 代码: // 获取当前日期是本年的第几周 //参数: a为年 b为月 c为日 function getYearWeek(a, b, c) {var date1 new Date(a, parseInt(b)…