File
用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件或目录
Fiel类只用于表示表示文件(目录)的信息,(名称,大小等),不能对文件的内容进行访问
-File(String pathname)
通过将给定路径名字符串转换成抽象路径名来创建一个新File实例
抽象路径应尽量使用相对路径,并且目录的层级分割符,不要直接写"/"和"\",应该使用File.separator这个常量表示,以避免不同系统带来的差异
/*
* 在目录下创建test.txt文件
*/
File file = new File("./test.txt");
if(!file.exists()) {
file.createNewFile();
System.out.println("创建完毕");
}else {
System.out.println("文件已经存在");
}
-delete();boolean
用于删除此抽象路径名表示的文件或目录
当且仅当成功删除文件或目录时,返回true,否则返回false
需要注意的时,若File对象,所表示的是一个目录时,在删除时需要保证此为空目录时,才可以成功删除(目录中不能包含任何子项)
-createNewFile();boolean
如果指定的文件不存在,并成功的创建,则返回true,如果指定的文件已经存在则返回false
/*
* 将当前目录中的test.txt文件删除
*/
File file = new File("./test.txt");
if(file.exists()) {
file.delete();
System.out.println("删除完毕");
}else {
System.out.println("不存在");
}
-length();long
返回由抽象路径名表示的文件的长度(占用的字节量)
-canRead();boolean
查看指定文件是否可读
-canWrite();boolean
查看指定文件是否可写
-isHidden();boolean
查看指定文件是否被隐藏了
File file = new File("./demo.txt");
//获取名字
String name = file.getName();
System.out.println("名字"+name);
//获取大小
long len=file.length();
System.out.println("大小"+len);
//可读可写
boolean cr = file.canRead();
boolean cw= file.canWrite();
System.out.println("是否可读"+cr);
System.out.println("是否可写"+cw);
//是否隐藏
boolean ih = file.isHidden();
System.out.println("是否可写"+ih);
-exists();boolean
若File表示的文件或目录存在则返回true ,否则返回false
-isFile();boolean
判断当前File对象所表示的是否为一个文件,
-isDirectory();boolean
判断当前File表示的是否为一个目录
-listFiles();File[]
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件
public static void main(String[] args) {
/*
* 获取当前目录中的所有子项
*/
File dir = new File(".");
/*
* boolean isFile();
* boolean isDirectory();
*/
dir.isFile();
if(dir.isDirectory()) {
//获取所有子项
File[] sub = dir.listFiles();
for(int i=0;i<sub.length;i++) {
System.out.println(sub[i].getName());
}
// System.out.println("len"+sub.length);
}
}
-listFiles(FileFilter filter);File[]
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。
package file;
import java.io.File;
import java.io.FileFilter;
/**
* File 提供了一个重载的listFiles方法,可以指定一个文件过滤器,然后将一个目录中满足 过滤器要求的子项返回,不满足的则忽略
*
* @author liuyanyan
*
*/
public class ListFilesDemo {
public static void main(String[] args) {
/*
* 获取当前目录中的所有文本文件
*/
/*File file = new File(".");
File [] sub = file.listFiles(new myFilter());
System.out.println("len:"+sub.length);
for (int i = 0; i < sub.length; i++) {
System.out.println(sub[i]);
}*/
// 使用匿名内部类形式创建
FileFilter filter = new FileFilter() {
public boolean accept(File file) {
return file.getName().endsWith(".txt");
}};
File file = new File(".");
File [] sub = file.listFiles(filter);
for(File s:sub) {
System.out.println(s);
}
System.exit(0);
//使用匿名内部类形式创建
File file1 = new File(".");
File [] sub1 = file.listFiles(new FileFilter() {
public boolean accept(File file) {
return file.getName().endsWith(".txt");
}});
}
}
/*class myFilter implements FileFilter{
public boolean accept(File file) {
* 锅过滤器 过滤的条件
String name = file.getName();
System.out.println("正在过滤"+name);
return name.endsWith(".txt");
return file.isFile();
}
}*/
File表示目录信息
-mkdir();boolean
用于创建此抽象路径名指定的目录;
当且仅当以创建目录时,返回true,否则返回false
public static void main(String[] args) {
/*
* 当前目录下新建一个目录Demo
*/
File dir = new File("./demo");
if(!dir.exists()) {
dir.mkdir();
System.out.println("目录已经创建");
}else {
System.out.println("目录已经存在");
}
}
-mkdirs();boolean
用于创建抽象路径名指定的目录,包括所有必需但不存在的父目录,
注意;此操作失败时也可能已经成功的创建一部分必需的父目录
当且仅当以创建目录,以及所有必需的父目录时,返回true,否则返回false
public static void main(String[] args) {
/*
* 在当前目录下创建a/b/c/d/e/f目录
*/
File dir = new File("./a/b/c/d/e/f");
/*
* mkdirs 方法将所有不存在的父目录
* 一同创建出来
*/
if(!dir.exists()) {
dir.mkdirs();
System.out.println("目录创建完毕");
}else {
System.out.println("目录已经存在");
}
}
* 删除给定的File所表示的文件或目录
*
* 递归调用:
* 方法内部调用自己方法的现象,称为递归调用
* 递归能不用就不用,随着递归的次数增加,内存开销大
*
* 使用递归:
* 1:递归现象必须在一个分支中控制
* 2:层级尽量少
public static void main(String[] args) {
File file=new File("./a");
delete(file);
}
public static void delete(File file) {
/*先将目录清空
* 1:获取该目录中所有子项
* 2:便利他们一个一个删除
*/
if(file.isDirectory()) {
File []subs = file.listFiles();
for (int i = 0; i < subs.length; i++) {
File sub = subs[i];
delete(sub);
}
}
file.delete();
}