IO流概念
IO流即Input流和Output流
流(Stream)可以理解为内存与磁盘建立的一条传输数据的通道,Input流是从内存向磁盘传输数据的通道(写文件),Output流是从磁盘向内存传输数据的通道(读文件)
分类
字节流、字符流
区别在于字节流和字符流所操作的数据单元不同,字节流操作的单元是数据单元是8位的字节,字符流操作的是数据单元为16位的字符。
字节流可以处理一切文件,而字符流只能处理纯文本文件。
File类
表示磁盘中的文件或者目录(文件夹)
构造方法
常用方法
获取功能的方法
public String getAbsolutePath() :返回此File的绝对路径名字符串。
public String getPath() :将此File转换为路径名字符串。
public String getName() :返回由此File表示的文件或目录的名称。
public long length() :返回由此File表示的文件的⻓度。
判断功能的方法
public boolean exists() :此File表示的文件或目录是否实际存在。
public boolean isDirectory() :此File表示的是否为目录。
public boolean isFile() :此File表示的是否为文件。
创建删除功能的方法
public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
public boolean delete() :删除由此File表示的文件或目录。
public boolean mkdir() :创建由此File表示的目录。
public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。
方法实操以及注释
package b_file;
import java.io.File;
import java.io.IOException;
public class Demo1 {
public static void main(String[] args) throws IOException {
// 使用路径创建 File 对象
File file = new File("dd/ff/ee/gg");
System.out.println(file);
// 判断文件或者目录是否存在
boolean exists = file.exists();
System.out.println("是否存在: " + exists);
// 判断是否是文件
boolean file1 = file.isFile();
System.out.println("是否是文件: " + file1);
// 判断是否是目录
boolean directory = file.isDirectory();
System.out.println("是否是目录: " + directory);
// 创建空文件 -> 当exists是false
boolean newFile = file.createNewFile();
System.out.println("是否创建: " + newFile);
// 创建空目录 -> exists-false, 父路径的目录都存在
boolean mkdir = file.mkdir();
// 创建目录, 顺便把不存在的父目录一起创建
file.mkdirs();
}
}
注意
delete()方法只能删除空文件夹和文件,如果文件夹中有文件,则不能用delete()方法直接删除,需要把文件夹中的文件删光才能用此方法删除文件夹
实现代码如下:
package b_file;
import java.io.File;
public class Demo6 {
// 递归删除 aa 文件夹
public static void main(String[] args) {
File file = new File("aa");
deleteDir(file);
}
public static void deleteDir(File dir) {
// 1.列出dir目录中全部的文件对象
File[] files = dir.listFiles();
if (files != null && files.length != 0) {
// 2.循环删除每一个文件对象
for (File f : files) {
if (f.isDirectory()) {
deleteDir(f); // 递归
} else {
f.delete();
}
}
}
// 3.dir是空目录了, 可以直接删除
dir.delete();
}
}