一、使用File创建一个文件
public static void main(String[] args) throws IOException {
/*
* 在当前目录下创建test.txt文件
*/
File file = new File("./test.txt");
/*
* boolean exists()
* 判断当前file表示的文件或者目录是否存在
*/
if(!file.exists()) {
/*
* 将当前File表示的文件创建出来
*/
file.createNewFile();
System.out.println("文件已创建成功");
}else {
System.out.println("文件已存在");
}
}
二、创建一个目录
public static void main(String[] args) {
/*
* 在当前目录创建一个目录:Demo
*
*/
File dir = new File("demo");
if(!dir.exists()) {
dir.mkdir();
System.out.println("目录已创建!");
}else {
System.out.println("目录已存在");
}
}
三、创建一个多级目录
public static void main(String[] args) {
/*
* 在当前目录下创建:a/b/c/d/e/f
*/
File dir = new File("a/e/d/e/f");
/*
* mkdir在创建目录时要求其所在父目录必须存在
* mkdirs则会将所有不存在的父目录一同创建出来
*/
if(!dir.exists()) {
dir.mkdirs();
System.out.println("目录已创建");
}else {
System.out.println("目录已存在");
}
}
四、删除一个目录
public static void main(String[] args) {
File dir = new File("a");
if(dir.exists()) {
/*
* 删除目录的前提条件,该目录必须是一个空目录
*/
dir.delete();
System.out.println("删除完毕!");
}else {
System.out.println("目录不存在!");
}
}
五、删除一个文件
public static void main(String[] args) {
/*
* 将当前目录下的test.txt文件删除
*
* “./”不写,默认也是在当前目录中
*/
File file = new File("test.txt");
if(file.exists()) {
file.delete();
System.out.println("文件已删除");
}else {
System.out.println("文件不存在");
}
}
六、File类相关属性
package file;
import java.io.File;
/**
* java.io.File
* File的每一个实例用于表示文件系统(硬盘中)上的一个文件或目录
* 使用File可以:
* 1:访问属性信息(名字,长度,修改信息等)
* 2:操作文件或目录(创建,删除)
* 3:获取一个目录的子项
* 但不能访问文件数据
* @author Administrator
*
*/
public class FileDemo {
public static void main(String[] args) {
/*
* File没有无参构造方法,需要传入一个字符串,
* 该字符为绝对路径。注意,路径通常不会使用绝对路径
* 因为不同系统的绝对路径定义不同,会出现跨平台问题
* 相对路径的好处在于不存在跨平台的问题,但是相对路径
* 通常由运行环境而定。实际开发中比较常使用的是类加载路径
* 在exclipse中,通常相对“当前目录”,当前目录值得是当前程
* 序所在项目的项目目录。
*/
File file = new File("./demo.txt");
System.out.println(file);
/*
* 获取名字
*/
String name = file.getName();
System.out.println(name);
/*
* 获取该文件的长度(字节量)
*/
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 ih = file.isHidden();
System.out.println("是否隐藏:"+ih);
}
}
七、获取一个目录中的所有子项
package file;
import java.io.File;
/**
* 获取一个目录中的子项
* @author Administrator
*
*/
public class ListFilesDemo {
public static void main(String[] args) {
/*
* 获取当前目录中的所有子项
*/
File dir = new File("a");
/*
* boolean isFile()
* 判断当前file是否表示的是文件
*
* boolean isDirectory()
* 判断是否表示的是目录
*/
if(dir.isDirectory()) {
//获取当前目录中所有子项
File[] subs = dir.listFiles();
System.out.println(subs.length);
for(int i=0;i<subs.length;i++) {
System.out.println(subs[i].getName());
}
}
delete(dir);
}
public static void delete(File file) {
/*
* 首先判断该file是文件还是目录
* 若是目录,要先将所有子项删除(清空该目录)
* 然后再将该目录删除。
* 若是文件直接删除*/
if(file.isDirectory()) {
//先清空该目录
//获取该目录所有子项
File[] subs = file.listFiles();
for(int i=0;i<subs.length;i++) {
File sub = subs[i];
delete(sub);
/* * 递归调用
* 在当前方法内部再次调用,当前方法的现象
* 成为递归调用
* 在开发中能不用就不用*/
}
}
file.delete();
}
/* public static void delete(File file) {
if(file.isDirectory()) {
File[] subs = file.listFiles();
}
}*/
}
八、获取一个目录中满足条件的子项
package file;
import java.io.File;
import java.io.FileFilter;
/**
* File提供了一个重载的ListFiles方法,可以传入一个文件过滤器,然后将其表示
* 的目录满足过滤器要求的子项返回
* @author Administrator
*
*/
public class ListFilesDemo2 {
public static void main(String[] args) {
File dir = new File(".");
/*
* 获取当前目录中所有名字以"."开头的子项
*/
FileFilter filter = new FileFilter() {
public boolean accept(File dir) {
return dir.getName().startsWith(".");
}
};
// FileFilter filter = new FileFilter() {
// public boolean accept(File dir) {
// return dir.isFile();
// }
// };
File[] subs = dir.listFiles(filter);
for(int i=0;i<subs.length;i++) {
System.out.println(subs[i].getName());
}
}
}