java.io.File
类是文件和目录 路径名
的抽象表示,主要用于文件和目录的创建、查找和删除等操作。
Java虚拟机中的一个
File
实例表示一个路径,这个路径可能对应一个文件或一个目录或盘符。
构造方法 | 描述 |
---|---|
File(String pathname) |
根据指定路径名创建一个新的 File 实例。 |
File(String parent, String child) |
根据指定的父路径名字符串和子路径名字符串创建一个新的 File 实例。 |
File(File parent, String child) |
根据指定的父路径名和子路径名字符串创建一个新的 File 实例。 |
File(URI uri) |
根据指定的文件 URI 创建一个新的 File 实例。 |
这些构造方法可以根据不同的参数形式来创建 File
实例,用于表示文件或目录的抽象路径。其中,参数的具体含义如下:
pathname
:表示文件或目录的路径名的字符串形式。parent
:表示父路径的字符串形式。child
:表示子路径的字符串形式。uri
:表示文件 URI
类型的实例。方法名 | 作用 | 返回值列表 |
---|---|---|
boolean exists() |
判断文件或目录是否存在 | true :存在,false :不存在 |
boolean isFile() |
判断当前对象是否表示一个文件 | true :是文件,false :不是文件 |
boolean isDirectory() |
判断当前对象是否表示一个目录 | true :是目录,false :不是目录 |
String getName() |
获取文件或目录的名称 | 返回文件或目录的名称字符串 |
String getPath() |
获取文件或目录的路径 | 返回文件或目录的路径字符串 |
String getAbsolutePath() |
获取文件或目录的绝对路径 | 返回文件或目录的绝对路径字符串 |
long length() |
获取文件的大小(字节数) | 返回文件的大小(字节数) |
long lastModified() |
获取文件或目录的最后修改时间(毫秒值) | 返回表示最后修改时间的毫秒数 |
boolean createNewFile() |
创建一个新文件 | true :创建成功,false :创建失败 |
boolean mkdir() |
创建一个新目录 | true :创建成功,false :创建失败 |
boolean mkdirs() |
创建一个新目录,包括任何必需但不存在的父目录 | true :创建成功,false :创建失败 |
boolean delete() |
删除文件或目录 | true :删除成功,false :删除失败 |
File[] listFiles() |
返回表示该目录下所有文件和文件夹的 File 对象数组 |
返回表示该目录下所有文件和文件夹的 File 对象数组 |
String[] list() |
返回表示该目录下所有文件和文件夹名称的字符串数组 | 返回表示该目录下所有文件和文件夹名称的字符串数组 |
boolean renameTo(File dest) |
重命名文件或目录 | true :重命名成功,false :重命名失败 |
boolean canRead() |
判断文件是否可读 | true :可读,false :不可读 |
boolean canWrite() |
判断文件是否可写 | true :可写,false :不可写 |
boolean setReadable(boolean readable) |
设置文件的可读属性 | true :设置成功,false :设置失败 |
boolean setWritable(boolean writable) |
设置文件的可写属性 | true :设置成功,false :设置失败 |
boolean setExecutable(boolean executable) |
设置文件的可执行属性 | true :设置成功,false :设置失败 |
boolean canExecute() |
判断文件是否可执行 | true :可执行,false :不可执行 |
File[] listFiles(FilenameFilter filter) |
返回表示该目录下符合过滤器条件的文件和文件夹的 File 对象数组 |
返回表示该目录下符合过滤器条件的文件和文件夹的 File 对象数组 |
File[] listFiles(FileFilter filter) |
返回表示该目录下符合过滤器条件的文件和文件夹的 File 对象数组 |
返回表示该目录下符合过滤器条件的文件和文件夹的 File 对象数组 |
boolean isHidden() |
判断文件或目录是否被隐藏 | true :被隐藏,false :未隐藏 |
File[] listRoots() |
返回计算机系统中的根目录列表 | 返回计算机系统中的根目录的 File 对象数组 |
代码示例
import java.io.File;
import java.io.IOException;
import java.rmi.RemoteException;
import java.util.Arrays;
public class FileExample {
public static void main(String[] args) throws IOException {
/**
* 三种构造方法
*/
File file = new File("C:\\Users\\Lenovo\\Pictures\\Camera Roll");
File png = new File(file,"1 (30).jpg");
File jpg = new File("C:\\Users\\Lenovo\\Pictures\\Camera Roll","9.jpg");
// 文件或目录是否存在
System.out.println(file.exists()); // true
// 判断是否为目录
System.out.println(file.isDirectory()); // true
// 判断是否为文件
System.out.println(file.isFile()); // false
System.out.println(png.isFile());
// 判断是否为隐藏文件或目录
System.out.println(file.isHidden()); // false
// 判断是否为绝对路径
System.out.println(file.isAbsolute()); // true
// 获取路径和名称
String path = file.getPath();
System.out.println(path); // C:\Users\Lenovo\Pictures\Camera Roll
String name = file.getName();
System.out.println(name); // Camera Roll
System.out.println(png.getPath()); // C:\Users\Lenovo\Pictures\Camera Roll\j.png
System.out.println(png.getName()); // j.png
System.out.println(png.getAbsolutePath()); // D:\kaifamiao\codes\Java\JavaLearn\j.png
// 获取修改文件最后一次的时间戳
long l = png.lastModified();
System.out.println(l); // 0
System.out.println(file.lastModified()); // 1669354428403
// 获取文件大小
long length = jpg.length();
System.out.println(length); // 515913(字节)
// 获取分区剩余空间
System.out.println(file.getFreeSpace()); // 17147736064
System.out.println(png.getFreeSpace()); // 0
// 获取分区总空间
System.out.println(file.getTotalSpace()); // 107374178304
System.out.println(jpg.getTotalSpace()); // 107374178304
// 获取分区已用空间
System.out.println(file.getUsableSpace()); // 17147736064
System.out.println(png.getUsableSpace()); // 0
// 查看文件权限(canRead() 可阅读?canWrite() 可写?canExwcute() 可执行?)
System.out.println(jpg.canRead()); // true
System.out.println(jpg.canWrite()); // true
System.out.println(jpg.canExecute()); // true
System.out.println(file.canRead()); // true
System.out.println(file.canWrite()); // true
System.out.println(file.canExecute()); // true
// 查看目录的子目录,文件(listFiles()绝对路径 + 文件名,list() 文件名)
File[] files = file.listFiles();
System.out.println(Arrays.toString(files)); // [C:\Users\Lenovo\Pictures\Camera Roll\003953-16382903936365.jpg ...]
String[] list = file.list();
System.out.println(Arrays.toString(list)); // [003953-16382903936365.jpg ...]
File[] files1 = jpg.listFiles();
System.out.println(Arrays.toString(files1)); // null
String[] list1 = jpg.list();
System.out.println(Arrays.toString(list1)); // null
// 删除文件或目录
System.out.println(png.delete());
// 重命名
boolean b = png.renameTo(new File("1.png"));
System.out.println(b);
File io = new File(file,"剑来.txt");
if (!io.exists()) {
try {
io.createNewFile(); // 创建文件
} catch (IOException e) {
throw new RemoteException();
} finally {
io.mkdir(); // 创建最后一级目录
io.mkdirs(); // 创建多级目录
}
}
}
}
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
// 筛选以 png 结尾的文件
return pathname.getName().endsWith(".png");
}
});
System.out.println(Arrays.toString(files)); // [C:\Users\Lenovo\Pictures\Camera Roll\n.png]
Path
是 Java 中用于表示文件或目录路径的类。它提供了一种平台无关的方式来操作和处理文件系统上的文件和目录。
使用 Path
类可以执行以下操作:
创建一个 Path
实例:可以使用 Paths
类的 get()
方法创建 Path
实例。例如:
Path path = Paths.get("C:\\myfolder\\myfile.txt");
获取路径信息:可以使用 Path
实例的方法来获取路径的各个组成部分,如文件名、父路径、根路径等。例如:
Path fileName = path.getFileName(); // 获取文件名(包括扩展名)
Path parentPath = path.getParent(); // 获取父路径
Path rootPath = path.getRoot(); // 获取根路径
判断路径属性:可以使用 Path
实例的方法来判断路径的属性,如是否为绝对路径、是否为相对路径等。例如:
boolean isAbsolute = path.isAbsolute(); // 判断是否为绝对路径
boolean isRelative = path.isRelative(); // 判断是否为相对路径
连接路径:可以使用 Path
实例的 resolve()
方法连接多个路径,生成新的路径。例如:
Path newPath = path.resolve("subfolder").resolve("anotherfile.txt");
解析路径:可以使用 Path
实例的 resolveSibling()
方法解析相对路径或绝对路径中的兄弟路径。例如:
Path resolvedPath = path.resolveSibling("siblingfile.txt");
转换为字符串:可以使用 Path
实例的 toString()
方法将 Path
对象转换为表示路径的字符串。例如:
String pathString = path.toString();