1 文件系统的操作
-
创建文件,删除文件,创建目录,重命名文件,判定文件存在...
-
Java中提供file类进行文件系统操作,使用路径进行初始化表示具体的文件(可以存在,也可以不存在),基于这个对象进行后续操作。构造方法:需要使用双//。IDEA会自动转换。
基准目录取决于运行程序的方式。
-
IDEA中运行,基准路径是项目所在的目录
-
在命令行中通过Java命令运行,是Java命令所处的目录。
-
被其他进程调用的程序,例如进程1通过创建子进程的方式调用进程2。进程2的基准路径和进程1相同。
-
代码执行过程中,可以通过一些api修改基准路径,改成我们指定的某个路径。
修饰符及返回值类型 方法签名 说明
-
String getParent() 返回 File 对象的父目录文件路径
-
String getName() 返回 FIle 对象的纯文件名称
-
String getPath() 返回 File 对象的文件路径
-
String getAbsolutePath() 返回 File 对象的绝对路径
-
String getCanonicalPath() 返回 File 对象的修饰过的绝对路径 需要throw IOException
-
boolean exists() 判断 File 对象描述的文件是否真实存在
-
boolean isDirectory() 判断 File 对象代表的文件是否是一个目录
-
boolean isFile() 判断 File 对象代表的文件是否是一个普通文件
-
boolean createNewFile() 根据 File 对象,自动创建一个空文件。成功创建后返回 true
-
boolean delete() 根据 File 对象,删除该文件。成功删除后返回 true
-
void deleteOnExit() 根据 File 对象,标注文件将被删除,删除动作会到 JVM 运行结束时 才会进行。稍后删除。
-
String[] list() 返回 File 对象代表的目录下的所有文件名
-
File[] listFiles() 返回 File 对象代表的目录下的所有文件,以 File 对象表示 如果想看到所有目录和文件,需要递归。经典面试题。
-
boolean mkdir() 创建 File 对象代表的目录
-
boolean mkdirs() 创建 File 对象代表的目录,如果必要,会创建中间目录
-
boolean renameTo(File dest) 进行文件改名,也可以视为我们平时的剪切、粘贴操作。移动文件,就是修改文件所在的 路径,也可以视为一种”重命名“。
-
boolean canRead() 判断用户是否对文件有可读权限
-
boolean canWrite() 判断用户是否对文件有可写权限
-
2 文件内容的操作
-
操作系统提供了读文件和写文件的api,Java也进行了封装。”文件流“/”IO流“ Stream 针对流对象
-
都是抽象类,需要子类实现
-
字节流(二进制)读写数据的基本单位是字节。
-
InputStream
-
OutputStream 数据远离cpu
-
字符流(文本)读写数据的基本单位是字符。
-
Reader
-
read()
-
-
Writer
-
文件描述符表。打开文件等操作会有在文件描述符表占位置。占满了会有”文件资源泄露“。因此打开文件后应该及时关闭。问题隐蔽性高。
这样不用写finally也不用写close 语法为try with resources。对象必须是实现Closable接口的类才能放进这个try里面。
-
文件操作的核心内容:
-
打开文件 创建流对象即可
-
关闭文件
-
读文件 硬盘->内存
-
read() 读一次返回一个字节的内容(byte) 实际返回类型是int,读取完毕是-1 .使用循环读取文件所有内容。
-
read(字节数组)硬盘中读出的对应数据填充到buffer内存的字节数组中。buffer为输出型参数。
-
read(byte[],int off,int len) 使用数组中[off,off+len)下标范围的区间。
-
-
写文件
-
和read相似
-
但是写操作会把之前的内容清空。只outputstream打开内容也会清空。开启追加模式,写入的同时不会被清空:
-
sccander
-