File
1、java.io.File
File的每一个实例用于表示硬盘上的一个文件或者目录。
使用File可以:
(1)访问其表示的文件或目录的属性信息(名字,大小等)
(2)操作文件或目录(创建,删除)
(3)访问一个目录中的所有子项,但是不能访问文件数据
在表示文件或目录时,指定的路径尽量不要使用绝对路径,因为操纵系统格式不一致;
相对路径最常用,但是相对路径相对哪里要看程序在那个环境上运行,运行环境决定着相对路径;
在eclipse中运行程序时,"当前目录"指定该类所处的项目目录用“./”表示,在这里可以省略不写。
//在当前目录中创建一个文件demo.txt file.createNewFile()方法创建文件
File file = new File("C:/demo.txt");
//boolean exists()该方法适用于判断当前File表示的文件或目录是否存在,存在则返回true
if(!file.exists()){
file.creatNewFile();
System.out.println("文件已创建!");
} else{
System.out.println("文件已存在!");
}
2、使用File创建目录
//File提供了mkdir()方法,创建目录
File file = new File("./demo");
if(!file.exists()){
file.mkdir();
System.out.println("目录已创建");
} else {
System.out.println("目录已存在");
}
3、使用File创建多个目录
//File提供一个Mkdirs()可创建多个目录
File file = new File("./a/b/c/d");
if(!file.exists()){
file.mkdirs();
System.out.println("多个目录创建完毕!");
} else {
System.out.println("目录已存在!");
}
运行结果
第一次运行:多个目录已创建完毕!
第二次运行:目录已存在!
删除
1、将当前文件中的demo.txt文件删除
File file = new File("./demo.txt");
if(!File.exists()){
System.out.println("文件不存在!");
} else {
file.delete();
System.out.println("删除完毕!");
}
2、使用File删除
2.1删除一个目录
File file = new File("./demo");
if(file.exists()){
file.delete();
System.out.println("目录删除完毕!");
} else {
System.out.println("目录不存在!);
2.2删除目录有一个前提,即该目录必须是一个空白目录才可以删除,因此以下方式一般不采用
File file = new File("./a/b/c/d");
if(file.exists()){
file.delete();
System.out.println("目录删除完毕!");
} else {
System.out.println("目录不存在!");
}
运行结果:
目录删除完毕!
2.3删除多个目录用递归思想
//删除多个目录
public static void main(String[] args) {
File file = new File("./a");
fileDelete(file);
}
private static void fileDelete(File file){
File[] files = files.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isFile()){ //判断是不是文件,如果是文件则删除
file[i].delete();
System.out.println("删除的文件是:"+files[i]..getName());
} else if(file[i].isDirectory()){
fileDelete(files[i]);
}
}
file.delete();//删除空白的目录
System.out.println("删除完毕!");
}
过滤器
FileFilter是一个接口,用于路径下的文件名/目录过滤器
File file = new File("D:/");
Files[] files = file.listFiles(new FileFilter()){
public boolean accept(File pathname){
System.out.println("正在过滤"+pathname.getName());
return pathname.getName.getName().endsWith(".zip");
}
});
for(int i=0;i<files.length;i++){
System.out.println("过滤后的文件为:"+files[i]);
}
通过File获取文件信息
获取文件信息
File file = new File("./demo.txt");
//获取名字,File类提供了getName()获取文件或者目录名字
String name = file.getName();
System.out.println(name);
//获取文件字节长度,File类提供了length()获取文件数据或者目录的长度
long length = file.length();
System.out.println(length);
//是否可读写
boolean cr = file.canRead();
boolean cw = file.canWrite();
System.out.println("可读"+cr);
System.out.println("可写"+cw);
//是否为隐藏文件
boolean h = file.isHidden();
System.out.println(h);
获取一个目录中的所有子项
在file中提供了listFiles()方法返回File数组:可以获取当前目录中的所有子项,“.”表示在当前目录。
boolean isFile()判断当前 File表示的是否为文件
boolean isDirectory()判断当前File表示的是否为目录
File file= new File(".");//.指的是当前目录
File[] dirs = file.listFiles();
System.out.println(dirs.length);
for(int i=0;i<dirs.length;i++){
if(dirs[i].isFile()){
System.out.println("文件:"+dirs[i].getName());
} else if(dirs[i].isDirectory()){
System.out.println("目录:"+dir[i].getName);
}