文件与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

相关推荐
是店小二呀9 小时前
鸿蒙PC_Dart-Sass-ohos适配全记录
linux·运维·windows
智慧物业老杨12 小时前
物业数字化落地思考:真正的转型,是底层数据秩序的重构
java·大数据·人工智能·微服务·系统架构
星空15 小时前
金蝶苍穹build.gradle配置
java·build.gradle
C++ 老炮儿的技术栈16 小时前
我们在设计tcp协议时,要传一个字符串过去,报文:头十长度十内容,是否要把‘\0‘也填入,长度是否包含‘\0‘
开发语言·数据结构·c++·mfc·c
传奇开心果编程17 小时前
【Rust入门练中学】第2课:变量、可变性与常量
开发语言·学习·rust
zr想努力17 小时前
从0开始配置Perforce4环境
开发语言
步行cgn17 小时前
Spring 基于 XML 的自动装配:byName 详解
java·后端·spring
大帅点兵18 小时前
Apache Ant 1.9.9 完整讲解
java
幸运小圣18 小时前
PointerEvent 常用属性与事件整理【JavaScript】
开发语言·javascript·ecmascript
LuTshoes18 小时前
spring ai 实战 手搓 PlaneExecuteAgent
java·人工智能·spring·ai