File类的基本运用
前言
java基础-文件类的使用
File:文件和目录路径名的抽象表示形式,File 类的实例是不可变的
- 构造方法:
- File的常用功能:
-
创建功能
-
删除功能
-
获取功能
-
判断功能
-
修改文件名
一、构造方法
//File(String pathname) :将指定的路径名转换成一个File对象
File f = new File("D:\\a\\b.txt");
//File(String parent, String child) : 根据指定的父路径和文件路径创建File对象
File f2 = new File("D:\\a\\","b.txt");
//File(File parent, String child) :根据指定的父路径对象和文件路径创建File对象
File parent = new File("D:\\");
File f3 = new File(parent,"a\\b.txt");
二、基本使用
1.创建、删除功能
创建功能
-
boolean createNewFile() //创建文件
-
boolean mkdir() //创建文件夹
-
boolean mkdirs() //创建文件夹,支持多层创建
删除功能
-
boolean delete() //删除文件、文件夹
-
绝对路径:固定不可改变的路径,以盘符开头
-
相对路径:相对某个参照物,不能以盘符开头
-
在eclipse中相对路径相对应当前项目的根目录
-
注意:删除一个文件夹,这个文件夹下面不能有其他的文件和文件夹
代码如下(示例):
//File f = new File("d:\\a\\b.txt");//绝对路径
File f2 = new File("a.txt");//相对路径
//boolean createNewFile() : 当指定文件不存在时创建文件并返回true,否则返回false
System.out.println(f2.createNewFile());
//boolean mkdir() : 当指定文件夹不存在时创建文件夹并返回true,否则返回false
File f3 = new File("b");
System.out.println(f3.mkdir());
//boolean mkdirs() : 创建指定文件夹,当文件夹所在的目录不存在,则顺道一块创建了
File f4 = new File("a\\b\\f");
//System.out.println(f4.mkdir()); //多层目录支持创建
System.out.println(f4.mkdirs()); //支持单层、多层目录创建
File f5 = new File("c.txt");
System.out.println(f5.mkdir()); //创建的是目录
//boolean delete() :当指定的文件或文件夹存在时删除文件或者文件夹 并返回true,否则返回false
//System.out.println(f2.delete());
System.out.println(f5.delete());
//File f6 = new File("c");
//System.out.println(f6.delete());
2.判断功能
代码如下(示例):
File f = new File("b.txt");
//boolean exists() : 判断文件或者文件夹是否存在,如果存在则返回true,否则返回false
System.out.println(f.exists());
//File f = new File("a.txt");
File f2 = new File("a\\b.txt");
//boolean isAbsolute() :判断File对象指向的路径是否是绝对路径,如果是绝对路径则返回true,否则返回false
System.out.println(f2.isAbsolute());
File f = new File("a.txt");
File f2 = new File("b.txt");
//boolean isDirectory() :判断File对象指向的路径是否是文件夹,如果是则返回true,否则返回false
//boolean isFile() : 判断File对象指向的路径是否是文件,如果是则返回true,否则返回false
//System.out.println(f.isDirectory());
//System.out.println(f2.isDirectory());
System.out.println(f.isFile());
System.out.println(f2.isFile());
File f = new File("d:\\a\\c.txt");
//boolean isHidden() :判断File对象指向的路径是否有隐藏属性,如果隐藏了则返回true,否则返回false
System.out.println(f.isHidden());
3.获取功能、修改文件名
代码如下(示例):
File f = new File("d:\\a\\b.txt");
File f2 = new File("a.txt");
//File getAbsoluteFile() :以File对象的形式返回当前File对象所有指向的绝对路径
System.out.println(f2.getAbsoluteFile());
//String getAbsolutePath() : 返回File对象所指向的绝对路径
System.out.println(f2.getAbsolutePath());
File parent = new File("b");
File f3 = new File(parent,"c.txt");
if(!parent.exists()) {
parent.mkdirs();
}
System.out.println(f3.createNewFile());
//String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null
System.out.println(f3.getParent());
//File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。
System.out.println(f3.getParentFile());
File f = new File("a.txt");
File f2 = new File("d:\\a\\b.txt");
File f3 = new File("b");
//String getName() : 获取文件和文件夹的名称
System.out.println(f.getName());
System.out.println(f2.getName());
System.out.println(f3.getName());
//String getPath() : 返回创建File对象时给的路径
System.out.println(f.getPath());
System.out.println(f2.getPath());
System.out.println(f3.getPath());
//long lastModified() : 以毫秒值的形式返回最后修改时间
System.out.println(f.lastModified());
//2514023311294
Date d = new Date(f.lastModified());
System.out.println(d.toLocaleString());
//long length() : 返回文件的字节数
System.out.println(f.length());
File f4 = new File("b\\c.txt");
System.out.println(f4.length());
//修改文件名字
File f = new File("f.txt");
File f2 = new File("b.txt");
//boolean renameTo(File dest) : 将当前File对象所指向的路径 修改为 指定File所指向的路径
//注意:修改的文件路径不能存在,如果存在则修改失败
System.out.println(f.renameTo(f2));
4.获取文件下所有文件、文件夹名字,获取盘符
重要的获取功能
- String[] list() //获取当前文件下的所有文件、文件夹名字
- File[] listFiles() //获取当前文件下的所有文件、文件夹名字(带路径)
- static File[] listRoots() //获取电脑的所有盘符
File f = new File("b");
File f2 = new File("D:\\qycache");
File f3 = new File("b.txt");
//String[] list() : 返回当前路径下所有的文件和文件夹名称
//注意:只有指向文件夹的File对象才可以调用该方法
String[] files = f2.list();
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
}
File f = new File("b");
File f2 = new File("D:\\qycache");
File f3 = new File("c.txt");
//File[] listFiles()
File[] files = f2.listFiles();
for (File file : files) {
System.out.println(file.getName()); //因为获取的是带路径的,所以使用getName()
}
//static File[] listRoots() : 返回的是所有盘符
File[] files = File.listRoots();
for (File file : files) {
System.out.println(file);
}
三、基本运用
1.查看所有文件
private static void method(File file) {
if(file.isDirectory()){
File[] files = file.listFiles();
for(File f:files){
//判断是否文件对象
if(f.isFile()){
if(f.getName().endsWith(".java")){
System.out.println(f.getName());
}
}else if(file.isDirectory()){
method(f);
}
}
}
}
1.删除所有文件
if(f.isDirectory()){
//删除自己的所有子文件和子目录
//获取所有的子文件和子目录
File[] files = f.listFiles();
for(File f1 : files ){
if (f1.isFile()){
// 直接删除
System.out.println(f1.getName());
f1.delete();
}else if(f1.isDirectory()){
//继续查看是否还有文件和子目录
method(f1);
}
}
//删除自己
System.out.println(f.getName());
f.delete();
}
总结
File:文件和目录路径名的抽象表示形式,File 类的实例是不可变的
讲了File的构造函数、File的常用功能:创建功能、删除功能、获取功能、判断功能、修改文件名、获取文件下所有文件、文件夹名字,获取盘符以及基本的运用查找、删除。