File 类
- File类主要是Java为为文件的操作而设计的相关类
- File类的包名为 java.io,实现了Serializable,Comparable两大接口以便于其对象可序列化和比较
- File是文件和目录路径名的抽象表示,文件和目录是可以通过File封装成对象的,其封装的并不是一个真正存在的文件,仅是一个路径名。可以存在也可以不存在,通过具体的操作把这个路径的内仍转换为具体存在
常用方法
- File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例
- File(File parent,String child) 从父抽象路径名和子抽象路径名字符串创建新的File实例
- File(String parent,String child) 从父路径名字符串和子路径名字符串创建新的File实例
import java.io.File;
import java.lang.reflect.Field;
public static void method1() {
File file1 = new File("D:\\尚马\\study\\JavaIO\\test1.txt");
System.out.println(file1);
// System.out.println(file1.exists());
File file2 = new File("D:\\尚马\\study\\JavaIO\\", "test2.txt");
// System.out.println(file2.exists());
File file3 = new File("D:\\尚马\\study\\JavaIO\\");
Fiel fiel4 = new File(file3, "test3.txt");
// System.out.println(file3.exists());
}
文件夹操作
- boolean mkdir() 创建由此抽象路径名命名的目录,可以创建一级目录
- boolean mkdirs() 创建由此抽象路径命名的目录,包括任何必需但不存在的父目录,可以创建多级目录
- boolean delete() 永久删除 如果是删除目录,要求目录中没有文件或目录
- boolean createNewFile() 当具有改名称的文件不存在时,创建一个又该抽象路径命名命名的新空文件夹
- boolean setLastModified(long time) 设置文件的最后修改时间
public static void method() throws IOException {
File file1 = new File("D:\\尚马\\study\\JavaIO\\test1.txt");
file1.createNewFile();
System.out.println(file1.exists());
File file2 = new File("D:\\尚马\\study\\JavaIO\\test2\\");
file2.mkdir();
System.out.println(file2.exists());
File file3 = new File("D:\\尚马\\study\\JavaIO\\test3\\test3.txt");
file3.mkdirs();
System.out.println(file3.exists());
}
File类 判断方法
- boolean isDirectory() 判断是否是文件夹(目录)
- boolean isFile() 判断是否是文件
- boolean exists() 判断文件是否存在
- boolean isHidden() 判断是否是隐藏文件
- boolean isAbsolute() 判断是否是绝对路径
public static void method3() throws IOException {
File file1 = new File("D:\\尚马\\study\\JavaIO\\test1.txt");
//创建txt文件
file1.createNewFile();
//判断文件是否存在
boolean b = file1.exists();
System.out.println(b);
//判断是否是文件夹
boolean b1 = file1.isDirectory();
System.out.println(b1);
//判断是否是文件
boolean b2 = file1.isFile();
System.out.println(b2);
}
File类的获取方法
- String getAbsolutePath() 获取绝对路径
- long getFreeSpace() 获取剩余空间 单位是字节
- long getUsableSpace() 获取可用空间
- long getTotalSpace() 获取总空间
- String getParent() 获取父路径
- String getPath() 获取抽象路径名转化路径名字符串
- String getName() 获取文件或文件夹的名称
- long lastModified() 获取文件的最后修改时间
- String[] list() 获取目录下所有内容,返回字符串数组
- File[] listFiles 获取目录下的所有内容,返回File对象数组
- long lastModified() 获取修改时间到计算机元年的毫秒值
- boolean renameTo()移动并重命名文件
- boolean setLastModified() 设置修改时间 参数就是计算机元年到某个时间的毫秒值
- boolean setReadOnly() 设置只读文件
public static void main(String[] args) {
System.out.println("开始");
try {
method();
} catch (ArrayIndexOutOfBoundsException e) {
//程序在运行时,如果发生报错,查找ArrayIndexOutOfBoundsException
//捕获成功
System.out.println("下标越界");
}
System.out.println("结束 ");
}
public static void method() {
int[] arr = {1, 2, 3,};
System.out.println(arr[3]);
}
绝对路径和相对路径的区别
- 绝对路径 是指文件在硬盘上真正存在的路径
例如:
D:\develop\workspace\one\basecode\day08\src\cn\javasm\a\TestDemo.java
- 相对路径 是java过程中要访问的文件相对于当前文件的位置
- 例如:
day19\abc.txt
分隔符
separatorChar 目录分隔符
在windows中是\ 在linux中是 /
pathSeparatorChar 路径分隔符
在windows中是 ; 在linux中 是 :
案例一 删除给定目录中的全部文件
// 删除目录中所有的文件或目录
public static void del(File file) {
// 如果是目录
if (file.isDirectory()) {
// 获取所有的子目录和子文件
File[] files = file.listFiles();
for (File f : files) {
del(f);
}
}
// 删除文件或者目录
file.delete();
}
案例二:统计工作空间中java文件和class文件的个数
static int javaCount = 0;
static int classCount = 0;
public static void count(File file) {
if (file.isDirectory()) {
// 获取子目录和子文件
File[] files = file.listFiles();
for (File f : files) {
count(f);
}
} else if (file.getName().endsWith(".java")) {
javaCount++;
} else if (file.getName().endsWith(".class")) {
classCount++;
}
}