当前位置:网站首页>初始I/O及其基本操作
初始I/O及其基本操作
2022-06-30 00:27:00 【俚语h。】
一、文件的存储结构
文件是由OS和文件系统统一管理的
1、文件被以树形结构(类似于二叉树,但不是二叉树)进行管理,文件都是树上的结点(node)
2、文件可以分为两类:
1)、存储数据的文件——普通文件(俗称文件)
2)、管理树形结构组织的文件——目录/文件夹
3、这棵树只是逻辑结构,并不是硬盘上的物理结构(一个文件可能是磁盘上的多个部分共同组合起来的)
二、文件的路径
什么的是文件路径:文件的路径是指,根据一个规则,从文件树上唯一确定一个位置,这个位置一定对应到某个节点,这个结点是可以不存在的。

1、绝对路径
从一棵树的根节点出发描述的路径
例如我们用绝对路径表示hello.jpg文件
C:/Windows/Users/hello.jgp
2、相对路径
从当前位置出发,描述目标文件的位置
例如在hello.jpg位置描述a.txt的位置
hello.jpg的父节点Users的父节点Windows的父节点C:目录下的a.txt;
3、路径表示的特殊符号
“.”:表示在当前位置
“…”:表示回到当前位置的父节点(目录)上
三、文件的操作
在文件系统中,以结点为单位进行操作(代码层面)
例如:
文件的移动操作(文件重命名,文件剪切+粘贴): 结点的移动(重命名or 移动到其他结点下)
文件复制操作:新建结点+内容的复制
目录移动操作(目录的重命名、目录剪切+粘贴):以该节点位根的一棵子树的移动
目录复制操作:以该节点位根的一棵子树的复制
删除:默认情况下只能删除普通文件或者非空目录。只能删除结点,不能删除子树
删除非空目录:对整棵树的删除(应该先遍历删除叶子结点,而后删除整棵树);
四、利用Java代码实现对文件的基础操作
1、构造方法

创建一个File对象,对这个File对象进行新建,修改,删除等操作
//1.绝对路径的方式创建
File file1 = new File("D:/IO/hello.txt");
//2.传入父目录+子路径
File file2 = new File("D:/IO", "hello.txt");
//3.以File传入parent
File parent = new File("D:/IO");
File file3 = new File(parent, "hello.txt");
2、常用方法
测试文件权限
创建新的文件
例如
File file=new File("D:/IO/test.txt");
file.createNewFile();//此时会在D:/IO 目录下创建一个名为test的txt文件(注意,如果目录下已经有这个文件了就会创建失败)
删除文件
根据上个示例,我们创建了一个test.txt文件
我们就可以调用delete()方法将他删除
file.delete();//只能对叶子节点操作
//注意:文件正在被别的线程使用时,删除会失败。同时当前目录下不存在这个文件时也会删除失败
//删除非空目录也会失败
3、删除非空目录
删除非空目录时,我们需要类比二叉树,需要先将他的所有叶子节点删除才能将整棵树删除,下面是利用深度优先遍历的方法删除非空目录
删除非空目录some_dir
public static void main(String[] args) throws IOException {
File file=new File("D:/IO/some_dir");
traversal(file);
}
/** * 深度优先遍历当前文件目录的子节点(类似于二叉树的遍历) * @param file * @throws IOException */
private static void traversal(File file) throws IOException {
File[] files=file.listFiles();
for (File file1 : files) {
if (file1.isDirectory()){
System.out.println(file1.getCanonicalPath()+"\\");
traversal(file1);
//添加删除操作
file1.delete();
}else {
System.out.println(file1.getCanonicalPath());
//添加删除操作
file1.delete();
}
}
}
边栏推荐
- Sofaregistry source code | data synchronization module analysis
- MySQL advanced 1
- TwinCAT 3 EL7211模块控制倍福伺服
- 利用 CertBot 申请 Let’s Encrypt SSL 证书
- [advanced C language] dynamic memory management
- Can't recognize the original appearance
- [QNX Hypervisor 2.2用户手册]6.2.2 Guest与Host之间通信
- Events in JS
- 固定资产管理系统多少钱,固定资产管理系统价格
- 网络方向哪个发展更好?数据通信工程师学习路线分享
猜你喜欢

公司固定资产该哪个部门管理,一般公司固定资产怎么管理

Root cause of glideexception: failed decodepath{directbytebuffer- > gifdrawable- > drawable}

Review of vsftp, TFTP, samba and NFS

MySQL advanced 1

间歇采样转发干扰

自动融合,驰骋海外丨跨境电商YescomUSA携手云扩实现一站式自动化服务

Five key elements of the data center

俞敏洪:我的退与进;架构师必须了解的5种最佳软件架构模式;Redis夺命52连问|码农周刊VIP会员专属邮件周报 Vol.096

Connection query of SQL Server database

分布式任务调度 ElasticJob demo
随机推荐
MySQL Foundation 2
Color space conversion in video tonemapping (HDR to SDR) (bt2020 to bt709, YCbCr, YUV and RGB)
There is no web-based development for the reward platform. Which is suitable for native development or mixed development?
Several simple queries of SQL Server database
数据中台的五个关键要素
[dynamic programming] - linear DP
vsftp 与 TFTP 与 samba 与 nfs 复习
MySQL advanced 1
项目一:部署 LAMP ecshop电商平台
Solr basic operation 8
Botu V16 changes the model and firmware version of PLC
Summarize Flink runtime architecture in simple terms
JS的初步语法
【PHP】php压测,报错:通常每个套接字地址(协议/网络地址/端口)只允许使用
[uitableview] Pit 1: tableview:heightforheaderinsection: method does not execute
MySQL基礎2
SOFARegistry 源码|数据同步模块解析
有流量,但没有销售?增加网站销量的 6 个步骤
How long will it take to open a mobile account? In addition, is it safe to open a mobile account?
VIM plug in manager VIM plug installation method