文件与IO(2)

1.文件系统

文件系统属于操作系统的一部分。

1.文件系统操作

文件系统操作指的是编写代码,对文件进行创建,删除,复制,移动,查看等。

文件资源管理器是操作系统自带的软件,运行时调用文件系统提供的函数,用来管理磁盘上的文件/文件夹。

2.文件内容操作

读操作、写操作。

文件系统提供函数,Java对上述函数进行了封装。

2.File类(java.io.file)

IO输入输出是针对CPU而言的

属性

构造方法

一个File对象,就对应一个文件/文件夹。构造参数可以是绝对路径,也可以是相对路径。(相对路径的基准路径取决于程序运行时所在的工作目录)。

基准路径所在的位置:

复制代码
File f1=new File("D:/test/A.txt");//绝对路径

File f2=new File("./test.txt");//相对路径

其它方法

文件不一定存在,File对象能新建文件

1.创建文件

创建文件失败的原因:空间不够、权限不足

2.删除文件

正常退出,例如:word临时文件自动删除;

异常退出,例如:编辑word文件时电脑突然断电,文件未保存,临时文件保存在硬盘上,下次启动word重新读取(但不可靠)

警告:方法有返回值,忽略了返回值

deleteOnExit在JVM进程结束后才会删除

3.判断

4.对目录的操作

5.特殊的目录(回收站)

每个盘下有一个这样的目录

6.创建一级目录

7.创建多级目录

8.重命名和移动renameTo

renameFile

9.移动的同时rename

对于文件移动,如果操作时源路径和目标路径是在同一个硬盘上,时间复杂度O(1)。

如果不是一个盘,时间复杂度为O(n)。

查看读写权限

3.文件内容的读写操作

(stream)流对象(一组类):操作系统提供了文件操作相关的api函数,Java对api进行封装,封装的内容就叫做流对象.

Java标准库中流对象分为字节流和字符流

字节流:读写二进制文件

抽象类:InputStream输入。子类FileInputStream

OutputStream输出。子类OutputStream

字符流:读写文本文件

抽象类:Reader输入。子类:FileReader

Writer输出。子类:FileWriter

1.字节流读写

读:FileInputStream:

异常:FileNotFoundExceeption

写:FileOutputStream

read()

一次读一个字节Byte,返回int。因为Java中的Byte是有符号的,-128~127,如果文件中存有0xFF,转为有符号byte是-1,无法区分是文件读到末尾标记-1还是文件内容,所以返回无符号0~255的int,文件结束返回-1

返回值-1表示文件结束;

read(byte\[\] b):读满数组,批量读取。底层会利用字节对齐,效率高

byte\[\] b是输出型参数。

输出型参数:比如给一个方法传一个空的数组,这个方法最终返回这个数组。

假设b数组的长度为1024,read尽量读1024;如果数据不足1024,read有多少读多少。

有多少读多少。

返回值是实际读取的长度。

read(byte\[\] b,int off,int len):读数组,从offset下标开始,最多读len个

len预期读多少字节,off(offset):偏移量,当前位置相对于数组开头位置的下标差值

控制以16进制输出:一个16进制数字对应4个bit位,两个16进制数字,就是8bit,等于1个Byte

相关推荐
mqiqe32 分钟前
AgentScope Java 2.0 集成 Chat Completions Web:一行依赖让你的 Agent 变身 OpenAI 兼容服务
java·开发语言·前端
qq_5896660542 分钟前
Java微服务介绍及应用
java·开发语言·微服务
OPEN-F1 小时前
C++进阶教程:运算符重载与类型转换
java·c++·算法
小小数媒成员1 小时前
存储器层级结构
java·服务器·前端
uoKent1 小时前
c++中的extern关键字
开发语言·c++
牧杉-惊蛰1 小时前
将数组对象根据自定义排列
java·开发语言·算法
砚底藏山河1 小时前
【量化纯GET实战 #04】批量快照:一次 HTTP GET 取多只股票
java·python·金融·eclipse
君顾11 小时前
家校托管互通:从需求分析到系统架构的落地实践
java·开发语言·托管
QQ_21696290961 小时前
【源码编号:project93375】SpringBoot汽车维修管理信息系统:客户车辆、维修预约、工单派发、配件结算全流程实战
java·spring boot·后端·汽车·springboot·需求分析