学习目标:
file及其常用方法的学习使用
学习内容:
一,file
1.1概述
文件和路径的抽象表示形式
把系统中的字符串路径封装成为java中的对象
具有一些属性和方法,能更方便的操作文件和文件夹
1.2创建对象
方法
/**
File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
*/
创建File对象,将指定路径的文件或者文件夹作为对象
File file = new File(”路径名“);
将路径名声明为字符串对象
String pathPartent = "路径名";
创建对象,在指定的父目录中
File file01 = new File(pathPartent,"文件夹或者文件名");
File file02 = new File(file01,"文件或者文件夹名");
1.3常用方法
/**
* CRUD
* Create
* Read
* Update
* Delete
* 增
boolean mkdir()
创建此抽象路径名指定的目录。
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
boolean createNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
* 删
boolean delete()
删除此抽象路径名表示的文件或目录。
void deleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
* 改
boolean renameTo(File dest)
重新命名此抽象路径名表示的文件。
*/
注:File file = new File();为创建抽象对象,并不会在磁盘中写入文件或文件夹
mk.dir为在磁盘中创建可观测到的文件或者文件夹,但是不可越级创建
mk.dirs可以创建所有缺失的文件目录;
执行删除操作时,文件中存在内容,不能执行
查
/**
*
boolean exists()
测试此抽象路径名表示的文件或目录是否存在。
boolean isAbsolute()
测试此抽象路径名是否为绝对路径名。
boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden()
测试此抽象路径名指定的文件是否是一个隐藏文件。
File getAbsoluteFile()
返回此抽象路径名的绝对路径名形式。
String getAbsolutePath()
返回此抽象路径名的绝对路径名字符串。
String getName()
返回由此抽象路径名表示的文件或目录的名称。
String getParent()
返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
File getParentFile()
返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
String getPath()
将此抽象路径名转换为一个路径名字符串。
long getTotalSpace()
返回此抽象路径名指定的分区大小。
long getFreeSpace()
返回此抽象路径名指定的分区中未分配的字节数。
long getUsableSpace()
返回此抽象路径名指定的分区上可用于此虚拟机的字节数。
long lastModified()
返回此抽象路径名表示的文件最后一次被修改的时间。
long length()
返回由此抽象路径名表示的文件的长度。
String[] list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] list(FilenameFilter filter)
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。
File[] listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。
File[] listFiles(FileFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
*/
文件过滤器
在创建文件对象时,传入文件过滤器并重写过滤器方法
public static void main(String[] args) {
File file = new File("D:\\Files\\JavaFiles");
// 创建文件过滤器
FileFilter filter = new FileFilter() {
@Override
public boolean accept(File pathname) {
//获取文件路径下所有后缀为txt的文件
return pathname.getName().endsWith(".txt");
}
};
// 获取所有文件,需要满足过滤器中的要求
File[] files = file.listFiles(filter);
//遍历该文件夹中的文件或者文件夹
for (File f : files) {
System.out.println(f);
}
}
递归获取所有文件和文件夹
public static void main(String[] args) {
/**
* 获取指定目录中所有的文件和文件夹【包括子级】
*/
File file = new File("D:\\Files");
lookFiles(file);
}
//创建递归方法 参数为文件类型的对象
public static void lookFiles(File file) {
// 获取file对象中的所有文件和文件夹
File[] files = file.listFiles();
// 遍历获取到的所有内容
for (File f : files) {
// 判定f是文件还是文件夹
if (f.isFile()) {
// 文件,直接输出
System.out.println("\t文件"+f);
} else {
// 输出文件夹
System.out.println("文件夹:" + f);
// 文件夹,再次调用方法读取内容
lookFiles(f);
}
}