1.  基本概念

    java.io.File 类主要用于描述文件目录路径的抽象表示信息,可以获取文件或目录的特征信息,如: 大小等。

 

2.  常用方法

    方法声明                  功能描述

    <1>File(String pathname)              根据参数指定的路径名来构造对象

    <2>File(String parent, String child)           根据参数指定的父路径和子路径信息构造对象

    <3>File(File parent, String child)          根据参数指定的父抽象路径和子路径信息构造对象

    <4>boolean exists()                测试此抽象路径名表示的文件或目录是否存在

    <5>String getName()                 用于获取文件的名称

    <6>long length()                   返回由此抽象路径名表示的文件的长度

    <7>long lastModified()              用于获取文件的最后一次修改时间

    <8>String getAbsolutePath()            用于获取绝对路径信息

    <9>boolean delete()                用于删除文件,当删除目录是要求是空目录

    <10>boolean createNewFile()            用于创建新的空文件

    <11>boolean mkdir()                用于创建目录

    <12>boolean mkdirs()                用于创建多级目录

    <13>File[] listFiles()                获取该目录下的所有内容

    <14>boolean isFile()                判断是否为文件

    <15>boolean isDirectory()              判断是否为目录

    <16>File[] listFiles(FileFilter filter)           获取目录下满足筛选器的所有内容

 

3.  案例题目

      遍历指定目录以及子目录中的所有内容并打印出来         

 

    思路:

  1       class FileTest{
  2 
  3   
  4 
  5         //  自定义成员方法,实现指定目录以及子目录中,所有内容的打印
  6 
  7         public static void show(File file){
  8 
  9           //  获取目录f3下的所有内容,并记录到一维数组中
 10 
 11           File[] filesArray = file.listFiles();
 12 
 13           //  遍历数组
 14 
 15           for (File tf : filesArray){
 16 
 17             String name = tf.getName();
 18 
 19             //  判断是否为文件,若是则直接打印文件名称
 20 
 21             if ( tf.isFile() ){
 22 
 23               println(name);
 24 
 25             }
 26 
 27             //  若是目录,则使用[]将目录名称括起来
 28 
 29             if (tf.isDirectory()){
 30 
 31               println("[" + name + "]");
 32 
 33               show(tf);
 34 
 35             }
 36 
 37           }
 38 
 39         }
 40 
 41  
 42 
 43         main() throws IOException {
 44 
 45  
 46 
 47           //  1.  构造File类型的对象,与 d:/a.txt 文件关联
 48 
 49           File f1 = new File("d:/a.txt");
 50 
 51           //  2.  若文件存在,则获取文件的相关特征信息,并打印,随后删除文件
 52 
 53           if (f1.exists()) {
 54 
 55             println("文件名称:" + f1.getName() );
 56 
 57             println("文件大小:" + f1.length() );
 58 
 59             Date d1 = new Date(f1.lastModified());
 60 
 61             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 62 
 63             println("文件的最后一次修改时间:" + sdf.format(d1));
 64 
 65             //  绝对路径:  以根目录开始的路径信息,如: c:/  d:/  /..
 66 
 67             //  相对路径:  以当前目录所在位置开始的路径信息,如:./  ../  相对路径
 68 
 69             println("文件的绝对路径信息是:" + f1.getAbsolutePath());
 70 
 71             println(f1.delete() ? "文件删除成功":“文件创建失败!”);
 72 
 73           }else{
 74 
 75             //  3.  若文件不存在,则创建新的空文件
 76 
 77             println(f1.createNewFile() ? "文件创建成功" : "文件创建失败");
 78 
 79           }
 80 
 81  
 82 
 83           //  4.  实现目录的删除和创建
 84 
 85           File f2 = new File("d:/捣乱/猜猜我是谁/你猜我不猜/死鬼");
 86 
 87           if (f2.exists()){
 88 
 89             println("目录名称是:" + f2.getName());
 90 
 91             println(f2.delete() ? "目录删除成功":“目录删除失败”);
 92 
 93           } else{
 94 
 95             //println(f2.mkdir()?"目录创建成功":"目录创建失败");  //  创建单层目录
 96 
 97             println(f2.mkdirs()?“目录创建成功”:"目录创建失败");  //  创建多层目录
 98 
 99           }
100 
101  
102 
103           //  5.  实现将指定目录中的所有内容打印出来
104 
105           File f3 = new File("d:/捣乱");
106 
107           //  获取目录f3下的所有内容,并记录到一维数组中
108 
109           File[] filesArray = f3.listFiles();
110 
111           //  遍历数组
112 
113           for(File tf: filesArray){
114 
115             String name = tf.getName();
116 
117             //  判断是否为文件,若是则直接打印文件名称
118 
119             if (tf.isFile()) {
120 
121               println(name);
122 
123             }
124 
125             //  若是目录,则使用[]将目录名称括起来
126 
127             if (tf.isDirectory()){
128 
129               println("[" + name + "]");
130 
131             }
132 
133           }
134 
135  
136 
137           //  6.  实现目录中所有内容的获取,同时进行过滤
138 
139           //  匿名内部类的语法格式:接口 / 父类类型 引用变量名 = new 接口/父类类型() {方法的重写};
140 
141           /*     FileFilter fileFilter = new FileFilter(){
142 
143                   @Override
144 
145                   public boolean accept(File pathname){
146 
147                     //  若文件名是以  .avi为结尾,则返回true表示保留,否则,返回false (表示丢弃)
148 
149                     return pathname.getName().endsWith(".avi");
150 
151                   }
152 
153                } ;
154 
155           */
156 
157  
158 
159           //  Lambda 表达式的格式:(参数列表) -> {方法体}
160 
161           FileFilter fileFilter = (File pathname) -> {return pathname.getName().endsWith(".avi");};
162 
163           File[] filesArray2 = f3.listFiles(fileFilter);
164 
165           for(File tf : filesArray2){
166 
167             println(tf);
168 
169           }
170 
171  
172 
173           //  7.  使用递归的思想,获取目录,以及子目录中的内容
174 
175           show(new File("d:/捣乱"));
176 
177         }
178 
179       }