【java学习笔记】文件操作
文件操作 java.io.File
①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据)
1.单个文件
创建单个文件,查看属性,删除单个文件。
1 package tmp; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 public class File_createNewFile { 7 public static void main(String[] args) throws IOException { 8 9 //在当前目录下(当前项目的根目录)创建一个文件test.txt 10 File file = new File("."+File.separator+"test.txt"); 11 12 if(!file.exists()){ 13 file.createNewFile(); 14 System.out.println("文件创建完毕!"); 15 }else{ 16 System.out.println("该文件已存在!"); 17 } 18 19 System.out.println(file.getName()); //获取文件名 String 20 System.out.println(file.length()); //获取文件长度 long ,单位:字节 21 System.out.println(file.canRead()); //是否可读 22 System.out.println(file.canWrite()); //是否可写 23 System.out.println(file.isAbsolute()); //是否是一个绝对路径 24 System.out.println(file.isFile()); //是否是文件 25 System.out.println(file.isDirectory());//是否是目录 26 System.out.println(file.isHidden()); //是否隐藏 27 System.out.println(file.exists()); //是否存在 28 29 File[] files = file.listFiles(); //获取指定路径下子目录和子文件 30 for (File f : files) { 31 System.out.println(f); 32 } 33 34 File file2 = new File("."+File.separator+"test2.txt"); 35 file.renameTo(file2); //重命名/剪切 36 37 file.delete(); //删除文件 38 System.out.println(file.exists()); //文件不存在了 39 40 String path = file.getAbsolutePath();//获取绝对路径 41 System.out.println(path); 42 } 43 }
2.一级目录
一级目录的创建,删除。
1 import java.io.File; 2 3 // 使用File创建一个目录 4 public class File_mkdir { 5 public static void main(String[] args) { 6 //在当前目录下创建一个目录:demo 7 // File dir = new File("a/b/demo.txt"); // 只有当a/b两级目录存在时可创建,否则不行。 8 File dir = new File("demo.txt"); 9 if(!dir.exists()){ 10 dir.mkdir(); 11 System.out.println("目录已创建"); 12 }else{ 13 System.out.println("该目录已存在!"); 14 } 15 dir.delete(); // 如果删除的是目录,并且目录下有子文件或者子目录则会删除失败。 16 System.out.println(dir.exists()); 17 } 18 }
3.多级目录
多级目录的创建,删除。
1 import java.io.File; 2 3 //创建一个多级目录 4 public class File_mkdirs { 5 public static void main(String[] args) { 6 //在当前目录下创建目录:a/b/c/d/e/f 7 File dir = new File("a"+File.separator+"b"+File.separator+ 8 "c"+File.separator+"d"+File.separator+"e"+File.separator+"f"); 9 10 if(!dir.exists()){ 11 //mkdirs在创建当前File表示的目录时会将所有不存在的父目录一同创建出来。而mkdir不具备这样的功能. 12 dir.mkdirs(); 13 System.out.println("目录已创建!"); 14 }else{ 15 System.out.println("目录已存在!"); 16 } 17 18 delete(new File("a")); 19 } 20 21 //删除file文件或者file目录及其所有文件 22 public static void delete(File file){ 23 if(file.isDirectory()){ 24 //将该目录子项全部清除 25 File[] subs = file.listFiles(); 26 for(int i=0;i<subs.length;i++){ 27 delete(subs[i]); 28 } 29 } 30 file.delete(); 31 } 32 }
4.文件过滤器
1 import java.io.File; 2 3 //获取一个目录中的所有子项 4 public class File_listFiles { 5 public static void main(String[] args) { 6 7 File dir = new File("."); 8 /* 9 * boolean isFile() 10 * 判断当前File表示的是否为文件 11 * 12 * boolean isDirectory() 13 * 判断当前File表示的是否为目录 14 */ 15 //判断是否为目录 16 if(dir.isDirectory()){ 17 /* 18 * File[] listFiles() 19 * 返回的数组中每个元素为该File表示的目录中的一个子项 20 */ 21 File[] subs = dir.listFiles(); 22 for(int i = 0; i < subs.length; i++){ 23 System.out.println(subs[i].getName()); 24 } 25 } 26 27 } 28 }
1 import java.io.File; 2 import java.io.FileFilter; 3 4 //File提供了一个重载的listFiles方法,允许传入一个FileFilter(文件过滤器), 5 //然后将当前File表示的目录中满足该过滤器要求的子项返回. 6 public class FileFilterDemo1 { 7 public static void main(String[] args) { 8 //获取当前目录中所有名字以"."开头 的子项 9 File dir = new File("."); 10 FileFilter filter = new FileFilter(){ 11 //添加过滤条件,只要认为参数给定的file满足要求,则返回true即可 12 public boolean accept(File file) { 13 String name = file.getName(); 14 System.out.println("正在过滤:"+name); 15 return name.startsWith("."); 16 } 17 18 }; 19 File[] subs = dir.listFiles(filter); 20 for(int i = 0; i < subs.length; i++){ 21 System.out.println(subs[i].getName()); 22 } 23 } 24 }
1 import java.io.File; 2 import java.io.FileFilter; 3 4 public class FileFilterDemo2 { 5 public static void main(String[] args) { 6 File file = new File("D:\"); 7 8 // FileFilter---文件过滤器 9 // 只获取D盘下的子文件 10 File[] fs = file.listFiles(new FileFilter() { 11 // 指定筛选规则 12 @Override 13 public boolean accept(File pathname) { 14 return pathname.isFile(); 15 } 16 }); 17 for(File f : fs){ 18 System.out.println(f); 19 } 20 } 21 }