File
java.io.File
File的每一个实例可以表示文件系统中的一个文件或目录
使用File可以:
- 访问文件或目录的属性(如:大小,名字,修改时间等)
- 操作文件或目录(创建,删除文件和目录)
- 访问目录中的所有内容
但是不可以:访问文件数据
eg:
File file = new File("."+File.separator+"demo.txt");
//获取名字
String name = file.getName();
System.out.println("name:"+name);
//大小(占用的字节量)
long length = file.length();
System.out.println("大小:"+length+"字节");
//是否为文件
boolean isFile = file.isFile();
System.out.println("是文件:"+isFile);
//是否为目录
boolean isDir = file.isDirectory();
System.out.println("是目录:"+isDir);
//是否为隐藏文件
boolean isHidden = file.isHidden();
System.out.println("是否隐藏:"+isHidden);
//最后修改时间
long time = file.lastModified();
Date date = new Date(time);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日 HH:mm:ss");
System.out.println("最后的修改时间为:"+sdf.format(date));
//是否可写
boolean canWrite = file.canWrite();
System.out.println("是否可写:"+canWrite);
//是否可读
boolean canRead = file.canRead();
System.out.println("是否可读:"+canRead);
//是否可执行
boolean canExecute = file.canExecute();
System.out.println("是否可执行:"+canExecute);
创建一个文件
/*
* 在当前目录下创建文件test.txt
* 默认路径就是当前目录,即"./",所以不写。
*/
File file = new File("test.txt");
/*
* boolean exists()
* 判断该文件是否真实存在
*/
if(!file.exists()) {
file.createNewFile();
System.out.println("创建完毕!");
}else {
System.out.println("该文件已存在!");
}
删除一个文件
/*
* 删除当前目录中的test.txt文件
*/
File file = new File("test.txt");
if(file.exists()) {
file.delete();
System.out.println("删除完毕!");
}else {
System.out.println("文件不存在!");
}
创建一个新目录
/*
* 在当前目录下创建一个名为demo的目录
*/
File dir = new File("demo");
if(!dir.exists()) {
dir.mkdirs();
System.out.println("创建目录完毕!");
}else {
System.out.println("该目录已存在!");
}
创建一个多级目录
/*
* 在当前目录下创建
* ./a/b/c/d/e/f目录
*/
File dir = new File("a"+File.separator+"b"+File.separator+"c"+File.separator+"d"+File.separator+"e"+File.separator+"f");
if(!dir.exists()) {
/*
* 在创建当前目录的同时将所有不存在的父目录一起创建出来
*/
dir.mkdirs();
System.out.println("目录创建成功!");
}
删除目录
delete方法可以删除一个目录,但是前提是该目录必须是一个空目录
File dir = new File("demo");
if(dir.exists()) {
dir.delete();
System.out.println("删除完毕!");
}
获取一个目录中所有子项
/*
* 获取当前目录中的所有子项
*/
File dir = new File(".");
/*
* boolean isFile();
* 判断是否为一个文件
*
* boolean isDirectory();
* 判断是否为一个目录
*
*/
if(dir.isDirectory()) {
/*
* File[] listFiles()
* 获取所有子项
*/
File[] subs = dir.listFiles();
for(File sub:subs) {
if(sub.isFile()) {
System.out.print("文件:");
}else {
System.out.print("目录:");
}
System.out.println(sub.getName());
}
}
获取一个目录中符合条件的部分子项
使用重载的listFile方法,需要传入一个额外的文件过滤器
文件过滤器是一个接口:FileFilter
File dir = new File(".");
/*
* 获取名字以"."开头的子项
*/
File[] subs = dir.listFiles(new FileFilter() {
public boolean accept(File file) {
System.out.println("正在过滤:"+file.getName());
return file.getName().startsWith(".");
}
});
for(File sub:subs) {
System.out.println(sub.getName());
}