java.io.File
File的每一个实例适用于表示硬盘上的一个文件或目录
使用File可以:
1:访问其表示的文件或目录的属性信息(名字、大小、修改时间等)
2:操作文件或目录(创建,删除)
3:访问一个目录中的所有子项
但是不能访问文件数据
public class FileDemo {
public static void main(String[] args) {
/*
* 访问当前项目目录中的demo.txt文件
* 在表示文件或目录是指定的路径尽量不要使用
* 绝对路径,因为不同的操作系统路径格式不一致,
*
* 相对路径是最常使用的,但是相对路径相对哪里
* 要看程序在那个运行环境运行,而运行环境决定
* 着相对路径。
*
* 在eclipse中运行程序时,“当前目录”指定位该
* 类所处的项目目录
*/
File file = new File("./demo.txt");
//获取名字
String name = file.getName();
System.out.println(name);
//长度.length返回的是一个long型//long类型返回的是文件占有的字节数
long length = file.length();
System.out.println("大小:"+length);
//是否可读可写
boolean cr = file.canRead();
boolean cw = file.canWrite();
System.out.println(cr+" "+cw);
//是否为隐藏文件
boolean cn = file.isHidden();
System.out.println(cn);
使用File创建一个文件
import java.io.File;
import java.io.IOException;
/**
*
* 使用File创建一个文件
* @author LIDN1601806300
*
*/
public class CreateNewFileDemo {
public static void main(String[] args) throws IOException {
/*
* 在当前目录中创建一个文件test.txt
*/
File file = new File("./test.txt");
/*
* boolean exists()
* 该方法用于判断当前File表示的文件或目录
* 是否已经存在,存在则返回true
*/
if(!file.exists()) {
System.out.println("不存在!");
file.createNewFile(); //创建了文件
System.out.println("文件已创建");
}else {
System.out.println("文件已存在");
}
}
}
获取目录中的子项
import java.io.File;
/*
* 获取一个目录中的所有子项
*/
public class ListFileDemo {
public static void main(String[] args) {
/*
* 获取当前目录中的所有子项
* .listFiles()返回的是一个File数组
*/
File dir = new File(".");
File[] subs = dir.listFiles();
System.out.println(dir.getName()+"目录中有"+subs.length+"个子项");
for(int i=0;i<subs.length;i++) {
/*
* boolean isFile()
* 判断当前File表示的是否为文件
*
* boolean isDirectory()
* 判断当前File表示的是否为目录
*/
if(subs[i].isDirectory()) {
System.out.println("目录:"+subs[i].getName());
}
if(subs[i].isFile()) {
System.out.println("文件:"+subs[i].getName());
}
}
}
}
FileFilter接口
用于抽象路径名的过滤器
此接口的实例可以传递给File类的listFiles(FileFilter)
方法,用于返回满足该过滤器要求的子项
import java.io.File;
import java.io.FileFilter;
/*
* 获取一个目录中满足条件的子项
*/
public class ListFilesDemo2 {
public static void main(String[] args) {
/*
* 获取当前目录中所有的文本数据
*/
File dir = new File(".");
//MyFilter filter = new MyFilter();
/*
* 使用匿名内部类形式完成文件过滤器
*/
File[] subs = dir.listFiles(new FileFilter() {
public boolean accept(File file) {
//名字是以".txt"结尾的
System.out.println("正在过滤:"+file.getName());
return file.getName().endsWith(".txt");
}
});
for(int i=0;i<subs.length;i++) {
System.out.println(subs[i].getName());
}
}
}
/*
* 文件过滤器
*/
/*class MyFilter implements FileFilter{
/*
* 实现了文件过滤器接口后,要求必须重写accept
* 方法,该方法的作用是定义过滤器规则,当参数file
* 满足要求该方法返回true即可
* (non-Javadoc)
* @see java.io.FileFilter#accept(java.io.File)
*/
/*public boolean accept(File file) {
//名字是以".txt"结尾的
System.out.println("正在过滤:"+file.getName());
return file.getName().endsWith(".txt");
}
}*/
删除文件或目录
文件:
import java.io.File;
/*
* 删除一个文件
*/
public class DeleteFileDemo {
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("文件不存在");
}
}
}
目录:
import java.io.File;
/*
* 删除目录
*/
public class DeleteDirFile {
public static void main(String[] args) {
/*
* 将当前目录中的demo目录删除
*/
File file = new File("./demo");
if(file.exists()) {
/*
* 删除目录有一个前提条件,即:该目录
* 必须是一个空目录才可以删除
*/
file.delete();
System.out.println("目录以删除");
}else {
System.out.println("目录不存在");
}
}
}
创建目录
创建一个目录
import java.io.File;
/*
* 使用File创建一个目录
*/
public class MkDiirDemo {
public static void main(String[] args) {
/*
* 在当前目录中新建一个目录demo
*/
File dir = new File("./demo");
if(!dir.exists()) {
dir.mkdir();//创建一个目录 mkdir创建目录条件是目录所在的目录必须存在
System.out.println("目录已创建");
}else {
System.out.println("目录已存在");
}
}
}
创建一个多级目录
import java.io.File;
/*
* 创建一个多级目录
*/
public class MkDirsDemo {
public static void main(String[] args) {
/*
* 在当前目录中创建/a/b/c/d目录
*/
File file = new File("./a/b/c/d");
if(!file.exists()) {
/*
* mkdirs会将所有不存在的父目录一并创建出来
*/
file.mkdirs();
System.out.println("目录创建");
}else{
System.out.println("目录已存在");
}
}
}
test:
import java.io.File;
public class Test {
public static void main(String[] args) {
File dir = new File("./a");
delete(dir);
System.out.println("删除完毕");
}
/*
*
* 练习
* 将给定的File表示的文件或目录删除
*/
public static void delete(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();
}
}