import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
public class demo_file {
/**
* File类表示一个文件或目录
*/
public static void main(String[] args) throws IOException {
// 参数为‘ C:\test.txt ’ 会报错,因为字符‘ \ ’表示转义字符,可以有以下三种方式
//1. ‘ C:\\test.txt ’ 2.‘ C:/test.txt ’ 3.java中 File.separator 也可以表示为文件的分隔符 所以为:‘ "C:"+File.separator+"test.txt" ’
File file = new File("C:\\test.txt");
//判断文件存不存在
if(file.exists()){
System.out.println("文件已存在!");
}else {
//创建文件
file.createNewFile();
System.out.println("文件创建成功!");
}
//判断file对象是否为文件
System.out.println(file.isFile());
//判断file对象是否为文件夹
System.out.println(file.isDirectory());
//删除文件夹 - 文件夹不存在就返回false
File file2 = new File("C:\\test");
//删除文件夹时,如果文件夹是空文件夹则可以删除,如果文件夹不为空则不能删除掉
boolean isDelFile2 = file2.delete();
System.out.println(isDelFile2);
//删除文件 - 文件不存在就返回false
File file3 = new File("C:\\test\\1.txt");
//删除文件可以直接删掉,所以要想删除一个文件夹需要先删除所有的文件
// boolean isDelFile3 = file3.delete();
// System.out.println(isDelFile3);
//列出当前文件夹中的所有文件名 - 返回字符串数组
String[] fileList = file2.list();
System.out.println(Arrays.toString(fileList));
//列出当前文件夹中的所有文件 - 返回File对象数组
File[] fileList2 = file2.listFiles();
for (File file1 : fileList2) {
System.out.println(
"文件名:"+file1.getName()+
",文件大小(多少字节?):"+ file1.length()+
",文件相对路径:"+file1.getPath()+
",文件绝对路径:"+file1.getAbsolutePath()+
",是否为隐藏文件:"+file1.isHidden()+
",是否为可读文件:"+file1.isHidden()
);
Date date = new Date(file1.lastModified());
DateFormat df = new SimpleDateFormat("YYYY-MM-DD HH:mm:SS");
System.out.print(",最近修改时间:" + df.format(date));
System.out.println();
}
//当前项目目录下的文件 --- 相对路径是以当前目录为参照
File file4 = new File("1.txt");
System.out.println(
"文件相对路径:"+file4.getPath()+
",文件绝对路径:"+file4.getAbsolutePath()
);
//当前项目目录下创建文件夹 --- 已有文件就返回False
File file5 = new File("test");
boolean isMkdirFile5 = file5.mkdir();
System.out.println(isMkdirFile5);
//重命名 和 移动文件夹
boolean b = file3.renameTo(new File("C:\\1.txt"));
System.out.println(b);
//过滤文件 --- Lambda 表达式
File[] files = file2.listFiles(pathname -> pathname.getName().endsWith(".txt"));
for (File file1 : files) {
System.out.println(file1.getName());
}
// file2.listFiles(new FileFilter() {
// @Override
// public boolean accept(File pathname) {
// return pathname.getName().endsWith(".txt");
// }
// });
}
}