IO流
File类:java.io.File
静态属性
String pathSeparator = File.pathSeparator;//路径分割符 Windows; Linux:
String separator = File.separator;//文件名称分割符 Windows反斜杠\ Linux正斜
构造方法:
File file01 = new File("D:\\test");
File file02 = new File("D:\\test\\a.txt");
File file03 = new File("a.txt");
File parent = new File("c:\\");
File file05 = new File(parent,"hello.java");
//用parent+child组合路径
private static void method02(String parent,String child) {
File file04 = new File(parent,child);
}
常用方法
获取
private static void method01() {//获取
//获取绝对路径
File f2 = new File("a.txt");
String AbsolutePath2 = f2.getAbsolutePath();
System.out.println(AbsolutePath2);//D:\IDEA_workspace\EpointProject\a.txt
//获取路径
File f21 = new File("D:\\test\\a.txt");
String Path1 = f1.getPath();
System.out.println(Path1);//D:\test\a.txt
System.out.println(f21 );//D:\test\a.txt
System.out.println(f21.toString());//D:\test\a.txt
//获取文件名
File f31 = new File("D:\\test\\a.txt");
System.out.println(f31.getName());//a.txt
File f32 = new File("D:\\test");
System.out.println(f32.getName());//test
//获取文件大小
File f41 = new File("D:\\test");
System.out.println(f41.length());//630468字节,路径不存在返回0
}
判断
private static void method02() { //判断
File f1 = new File("D:\\test\\a.txt");
System.out.println(f1.exists());//false;判断当前文件或目录是否真实存在
File f2 = new File("D:\\test");
//前提当前文件或目录真实存在,否则都为false
if(f2.exists()){
System.out.println(f2.isDirectory());//true 判断是否是文件夹
System.out.println(f2.isFile());//false 判断是否是文件
}
}
创建
private static void method03() throws Exception { //创建
//创建文件
File f1 = new File("D:\\test\\a.txt");
boolean b1 = f1.createNewFile();//路径正确文件不存在返回true;路径正确文件存在返回false;路径错误抛异常
//创建文件夹
/*
路径正确文件夹不存在返回true;
路径正确文件夹存在返回false;
路径错误返回false
*/
File f2 = new File("D:\\test\\file");
boolean b2= f2.mkdir();
File f4 = new File("File\\a\\b");
boolean b4= f4.mkdirs();
}
删除
private static void method04() {
File f1 = new File("D:\\test\\file");
boolean b1= f1.delete();
}
遍历
File f4 = new File("File");
String[] fileNames = f4.list();
for (String fileName:fileNames) {
System.out.println(fileName);//a
}
File[] files = f4.listFiles();
for (File file:files) {
System.out.println(file);//File\a
}
private static void method06( File f) {
File[] files = f.listFiles();
for (File file:files) {
if(file.isDirectory()){
method06(file);
}else{
String s = file.getPath();
s = s.toLowerCase();//转为小写
boolean b = s.endsWith(".class");
if(b){
System.out.println(file);//输出所有.class文件
}
}
}
}
FileFilter
private static void method06( File f) {
//筛选.java文件,lambda表达式方式
File[] files = f.listFiles(pathname -> pathname.isDirectory()||pathname.getName().toLowerCase().endsWith(".java") );
//以匿名内部类方式
File[] files = f.listFiles(new FileFilter() {//2.匿名内部类方式
@Override
public boolean accept(File pathname) {
return pathname.isDirectory()|| pathname.getName().toLowerCase().endsWith(".class");
}
});
}