Java基础—File类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础—File类相关的知识,希望对你有一定的参考价值。

第一讲 File类

一 概述

  1. File类:文件和目录路径名的抽象表现形式

  2. 特点和作用:

    1)用来将文件或文件夹封装成对象

    2)方便于对文件与文件夹的属性信息进行操作

    3)File类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变

    4)File对象可以作为参数传递给流的构造函数

二 File对象构建

  1. File f =new File(String pathname)    

    根据一个路径得到File对象

  2. File f =new File(String parent, String child)

    根据一个目录和一个子文件/目录得到File对象

  3. File f =new File(File parent,String child)

    根据一个父File对象和一个子文件/目录得到File对象

三 File类常用功能

  A. 创建功能

    public boolean createNewFile()  :创建文件 如果存在这样的文件,就不创建了且返回false

    public boolean mkdir(): 创建文件夹 如果存在这样的文件夹,就不创建了且返回false

    public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来且返回false

    注意:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。

  B. 重命名和删除功能

    public boolean renameTo(File dest):  File1.renameTo(File2)  

      如果File1和File2路径相同,将File1文件名改为File2的文件名。如果路径不同就是剪切

    public boolean delete():   删除文件或者文件夹,返回是否操作成功

      注意:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹,否则不能操作成功

      且删除功能不走回收站,直接没了

  C. 判断功能

    * public boolean isDirectory(): 判断是否是目录

    * public boolean isFile():判断是否是文件

    * public boolean exists():判断是否存在

    * public boolean canRead():判断是否可读,windows下认为所有文件都可读

    * public boolean canWrite():判断是否可写

      windows下可以通过File.setWriteable(false)设置为不可读,那么不可通过IO流写文件

    * public boolean isHidden():判断是否隐藏

    * boolean isAbsolute() : 判断文件是否是绝对路径

  D. 获取功能

    * public String getAbsolutePath():获取绝对路径

    * public String getPath():获取构造方法中的路径

    * public String getName():获取文件名,如果是目录,则返回null

    * public long length():获取长度。字节数

    * public String getParent(): 获取父目录

    * public long lastModified():获取最后一次的修改时间,毫秒值

    * public String[] list():获取指定目录下的所有文件或者文件夹的名称数组

    * public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组

四 列出文件与文件过滤

  String[] list()  获取所有文件

  String[]list(FilenameFilter filter): 返回一个字符串数组,获取目录中满足指定过滤器的文件或目录

  File[] listFiles() :  返回一个File对象数组,获取当前文件夹下的所有文件和文件夹

  File[] ListFiles(FilenameFilterfilter): 返回File对象数组,获取目录中满足指定过滤器的文件或目录

  例子1:判断F盘下是否有txt文件,如果有直接输出
    方法1:利用File.listFiles()得到所有文件对象,循环判断

 

File f = new File("F:/");
File[] subFiles= f.listFiles();
for(File subFile:subFiles){
     if(subFile.isFile()&&subFile.getName().endsWith(".txt")){
          System.out.println(subFile);
     }
}

 

    方法2:利用File[] ListFiles(FilenameFilterfilter) ,加过滤器判断

 

 

File f = new File("F:/");
File[] subFiles= f.listFiles(new FilenameFilter() {

    @Override
    public boolean accept(File dir, String name) {
        File file = new File(dir, name);
        return file.isFile()&&file.getName().endsWith(".txt");
    }
});
for(File subFile: subFiles){
    System.out.println(subFile);
}

  但是有一个问题是只能判断该目录下的是否包含txt文件,如果该目录下又包含其他目录

  则不能判断其他目录下是否包含txt文件,所以我们需要用循环

  例子升级版:判断目录下是否包含txt文件,包含子目录的判断

 

    public static void main(String[] args) {
        File dir = new File("F:/");
        allFileSearch(dir);
    }
    
    public static void allFileSearch(File dir){
        File[] subFiles = dir.listFiles(); // 得到所有子文件,包含文件和路径
        for(File subFile: subFiles){ //遍历
            if(subFile.isDirectory()){// 是目录,递归查找
                allFileSearch(subFile);
            }else{ // 是文件,判断直接输出
                if(subFile.getName().endsWith(".txt")){
                    System.out.println(subFile);
                }
            }
        }
    }

 

 

 

     

  

 

 

 

    

以上是关于Java基础—File类的主要内容,如果未能解决你的问题,请参考以下文章

[Java基础]File基础

JAVA-基础(File类)

Java基础—File类

零基础学Java—File类(五十)

JAVA基础-File类

Java基础之File类