File类是对文件系统中的文件和文件夹进行封装的对象

绝对路径:带有前缀字符串(盘符)  Windows :d:\\     Linux :/ (推荐使用后者)
相对路径:不带盘符 ./test/test1.txt      当前路径 "."    父路径 ".."    

File类的构造函数
1.   File (String pathname)
例:File f1=new File("FileTest1.txt"); //创建文件对象f1,f1所指的文件是在当前目录下创建的FileTest1.txt
2.   File (String parent , String child)
例:File f2=new File(“D:\dir1","FileTest2.txt") ;// 注意:D:\dir1目录事先必须存在,否则异常
3.   File (File parent , String child)
例:File f4=new File("\dir3");
File f5=new File(f4,"FileTest5.txt"); //在如果 \dir3目录不存在使用f4.mkdir()先创建

常见的方法:

public boolean exists( ) 判断文件或目录是否存在
public boolean isFile( ) 判断是文件还是目录
public boolean isDirectory( ) 判断是文件还是目录
public String getName( ) 返回文件名或目录名
public String getPath( ) 返回文件或目录的路径。
public long length( ) 获取文件的长度
public String[ ] list ( ) 将目录中所有文件名保存在字符串数组中返回。
File类中还定义了一些对文件或目录进行管理、操作的方法,常用的方法有:
public boolean renameTo( File newFile ); 重命名文件
public void delete( ); 删除文件
public boolean mkdir( ); 创建目录
String getAbsolutePath() 获取文件的磁盘绝对地址
File[] listFiles(FilenameFilter filter) 列取文件夹下的文件列表有过滤器有文件名过滤器file必须是文件夹才能使用
File[] listRoots() 列出可用的文件系统根

例子:(完成搜索功能)

要求:
 1、指定起始路径下包含指定词的所有文件(非隐藏文件)
 2、打印出全路径

      用递归的想法来从文件开始遍历,找到包含关键词的全部路径。(目录结构如下:查找包含“Java”的文件)

 

 

 

import java.io.File;
import java.io.FilenameFilter;

public class IOFile03 {
    public static void main(String[] args) {
        String path = "D:/tmp";
        String filter = "Java";
        searchFile(path,filter);
    }
    /**
     * @param path   指定路径
     * @param filter  过滤关键词
     */
    public static void searchFile(String path,String filter){
        File file = new File(path);
        if(file == null || !file.exists()){
            return;
        }else if(file.isDirectory()){  //是个目录
            FilenameFilter filenameFilter = new FilenameFilter() {   //过滤器
                @Override
                public boolean accept(File dir, String name) {
                    File file1 = new File(dir,name);  //创建该实例
                    if(file1.getName().contains(filter))
                        System.out.println(file1.getPath());
                        return false;
                }
            };
            file.list(filenameFilter);
            for (File src: file.listFiles()
                 ) {
                searchFile(src.getPath(),filter);  //递归的向下查找
            }
        }

    }
}

 

posted on 2020-02-20 20:49  CccccDi  阅读(544)  评论(0编辑  收藏  举报