JAVA I/O--(2)

来源:互联网 发布:tensorflow 目标识别 编辑:程序博客网 时间:2024/04/29 07:01

 

 

获取文件的属性信息

 

 

概述:主要介绍如何获取文件的属性信息,包括文件的文件名、文件所在的目录、文件是否可读、是否可写、文件大小以及最后修改时间等。

关键技术部析:

通过java.io.File 类可以获取文件的属性信息。

 

①、            File类的构造方法可为相对或绝对路径,传入参数被当作File对象的抽象路径。File file = new File(“D:/dony/hello.txt”);

②、            File类的getName方法获得文件名,该文件名不包含路径信息。

③、            File类的getAbsolutePath方法获得文件的绝对路径。

④、            File类的isAbsolutePath方法判断File对象的抽象路径是否为绝对路径。

⑤、            File类的toURI方法获取File对象的URI,以 “file:”协议开头。

⑥、            isDirectory返回它是否指向目录,isFile方法返回它是否指向一个具体文件。

⑦、            exists方法返回它指向的文件是否存在。

 

 

列出指定目录下的文件

File对象指向一个目录时,可以通过File对象来获取目录下的文件信息。

①、            File类的list方法返回该目录下所有文件(包含目录)的文件名

②、               listFiles方法返回该目录下所有文件的File对象

③、            FilenameFilter是文件名过滤接口类,所有自定义的文件名过滤器必须实现该接口的accept方法。

实现方法:

import java.io.File;

import java.io.FilenameFilter

 

a、 创建一个目录下的File类对象。File dirFile = new File(“D:/temp”);

b、利用户exists方法和isDirectory方法判断指定目录是否存在。

if(!dirFile.exists() || (!dirFile.isDirectory())

{}

c、 调查用File listFiles方法获取当前文件目录下的文件对象,是一个File数组,如果File是一个目录则递归调用listAllFiles方法。

listAllFiles(dirName)

{

File dirFile = new File(“dirName”);//dirName = D:/temp;

File[] files = dirFile.listFiles();

for(int i = 0; i < files.length; i ++)

{

             if(file[i].isFile())

                   { 直接受输出文件 }

             else if( file[i].isDirectory())

               { 为目录;listFileUtill.listAllFiles( files[i].getAbsolutePath());

}

}

 

列出目录中通过文件名过滤器过滤后的文件

实现程序:

import java.io.*;

public class FileTest

{

 

    public static void main(String[] args) throws Exception

    {

System.out.println("请输入文件后缀名,我将列出包含此后缀名的全部文件(不区分大小写):");

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        //你输入的文件后缀

        String suffix = br.readLine();

        //String suffix = ".doc";

        //新建当前目录文件对象

        File f = new File("G:/network");

        //列取文件

       FilenameFilter filter = new MyFilenameFilter(suffix);

        File[] fs = f.listFiles(filter);// listFiles 方法指定文件过滤器对象,它只能返回能通过文件过滤器的File对象。

        //打印输出

        for(int i=0; i<fs.length; i++)

        {

            System.out.println(fs[i].getName());

        }

    }

}

//名称过滤器

class MyFilenameFilter implements FilenameFilter

{

    private String suffix;

    //用文件后缀名构造对象

    MyFilenameFilter(String suf)

    {

        //为了不区分大小写,统一转换成小写

        this.suffix=suf.toLowerCase();

    }

    public boolean accept(File dir, String name)

    {

        //为了不区分大小写,统一转换成小写后进行比较

        return name.toLowerCase().endsWith(suffix);

    }

}

 

 

 

 

 

原创粉丝点击