Java中 File类知识总结

来源:互联网 发布:中岛健人 知乎 编辑:程序博客网 时间:2024/06/10 08:59

File类中常见的方法:

1,创建。
    boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。

     和输出流不一样,输出流对象一建立就创建文件。而且如果文件已经存在,会覆盖。
    boolean mkdir():创建文件夹。
    boolean mkdirs():创建多级文件夹。
2,删除。
    boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。
    void deleteOnExit();在程序退出时删除指定文件。
3,判断。
    boolean exists() :文件或目录是否存在。
    isFile():文件是否是一个标准文件。
    isDirectory():测试此抽象路径名表示的文件是否是一个目录
    isHidden();判断文件是否是隐藏的
    isAbsolute():测试此抽象路径名是否为绝对路径名。

4,获取信息。
    getName():获取文件名
    getPath():获取相对路径
    getParent():返回父目录

    getAbsolutePath() :获取绝对路径
    long lastModified(): 文件最后一次被修改的时间
    long length():文件的长度

    static File[] listRoots(): 列出可用的文件系统根。
    String[] list() :返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。(只能获取名称)   
    File[] listFiles() :返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。 (开发中用这个,它可以获取长度、名称...)
    String[] list(FilenameFilter filter) :返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

方法实例:

     1.

       File[] files = File.listRoots();
       for(File f : files)
        {
            System.out.println(f);//打印盘符:c盘d盘e盘f盘
        }

     2.

       File f = new File("c:\\abc.txt");
        String[] names = f.list();//调用list方法的file对象必须是封装的一个目录。该目录还必须存在。
        for(String name : names)
        {
            System.out.println(name);
        }

      3.

        File dir = new File("d:\\java");
        String[] arr = dir.list(new FilenameFilter()
        {
            public boolean accept(File dir,String name)
            {
                return name.endsWith(".bmp");

            }
        });
        for(String name : arr)
        {
            System.out.println(name);
        }

    4.递归遍历文件

      public static void showDir(File dir)
      {
        File[] files = dir.listFiles();
        for(int x=0; x<files.length; x++)
        {
            if(files[x].isDirectory())
                showDir(files[x]);
            else
                System.out.println(files[x]);
        }
    }

练习:将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。建立一个java文件列表文件。

思路:

1,对指定的目录进行递归。
2,获取递归过程所以的java文件的路径。
3,将这些路径存储到集合中。
4,将集合中的数据写入到一个文件中。

代码:

public static void main(String[] args) throws IOException
    {
        
        File dir = new File("d:\\java1223");
        List<File> list = new ArrayList<File>();
        fileToList(dir,list);
        File file = new File(dir,"javalist.txt");
        writeToFile(list,file.toString());
    }

    public static void fileToList(File dir,List<File> list)
    {
        File[] files = dir.listFiles();
        for(File file : files)
        {
            if(file.isDirectory())
                fileToList(file,list);
            else
            {
                if(file.getName().endsWith(".java"))
                    list.add(file);
            }
        }
    }

    public static void writeToFile(List<File> list,String javaListFile)throws IOException
    {
        BufferedWriter bufw =  null;
        try
        {
            bufw = new BufferedWriter(new FileWriter(javaListFile));
            
            for(File f : list)
            {
                String path = f.getAbsolutePath();
                bufw.write(path);
                bufw.newLine();
                bufw.flush();
            }

        }
        catch (IOException e)
        {
            throw e;
        }
        finally
        {
            try
            {
                if(bufw!=null)
                    bufw.close();
            }
            catch (IOException e)
            {
                throw e;
            }
        }
    }


0 0