zoukankan      html  css  js  c++  java
  • 62. File类常用方法

    为了怕混淆,先说明一些下面要出现的名词意思:
    例如:D:\新建文件夹 (2)\a.txt 和  D:\新建文件夹 (2)\aaaa

        D:\新建文件夹 (2)   父路径
        a.txt          子文件
        aaaa           子文件夹

    创建:

      创建子文件:
        createNewFile()    如果在指定位置创建一个空子文件,如果在此父路径已存在此子文件返回false,如果没有那么创建一个,并返回true
            public boolean createNewFile()
                   throws IOException
      创建子文件夹:  
        mkdir()      
            根据所给的父路径创建所给父路径中不存在的子文件夹,成功true,失败false
            注意:
                1.不能创建多个子文件夹,也就是所给的路径只有一个子文件夹是不存在的
                2.只能创建文件夹,不能创建文件,就算给a.txt,他也是a.txt文件夹
                
        mkdirs()    
            根据所给的父路径创建所给父路径中所有不存在的子文件夹,成功true,失败false
            注意:
                1.能创建多个文件夹
                2.只能创建文件夹,不能创建文件,就算给a.txt,他也是a.txt文件夹
                
        renameTo(File dest)  
            操作子文件夹:
                如果调用者的父路径和参数的父路径一样,那么就是调用者的子文件夹名字覆盖原文件夹名字并返回true(重命名)
                如果调用者的父路径和参数的父路径不一样,那么会操作失败返回false(剪切不能操作文件夹)           
            操作子文件:
               如果调用者的父路径和父参数的路径一样,那么就是重命名
               如果调用者的父路径和参数的父路径不一样,那么就是剪切(注意:如果名字也不相同,那么就是重命名加剪切)
       
    删除:
        delete()  
            删除此抽象父路径名表示的空子文件夹或者子文件,成功true失败false
            
        deleteOnExit()
            在虚拟机终止时,请求删除此抽象路径名表示的文件夹或文件。无返回值
        
        注意:第一个删除是执行了删除语句后,立刻会删除。而第二个是执行了删除语句不会被删除,只有当jvm退出时才会删除
        例如:网易音乐中我们可以试听(缓存),试听的时候文件是下载下来了,当我们退出网易云后,我们试听的文件会删除,
        这样是为了保证内存不会被浪费,打开网易云的时候不会加载这么多数据,启动不会变慢
       
    获取:
        抽象路径要父路径+子文件或者子文件夹(父路径可以不真实存在):
            getName()      返回由此抽象路径名表示的文件夹或文件的名称。(返回子文件夹或者子文件名)
            getParent()     返回此抽象路径名表示的父路径名;如果此路径名没有指定父路径,则返回 null。
            getPath()      返回此抽象路径名的绝对路径名字符串(返回父路径名+子文件或者子文件夹名)。
            getAbsolutePath() 返回此抽象路径名的绝对路径名字符串(返回父路径名+子文件或者子文件夹名)。
            lastModified()   如果在此路径下存在此文件或者文件夹,那么返回的是最后一次修改的时间,如果不存在那么返回的是0
            length()      返回由此抽象路径名表示的子文件大小(字节),如果此路径下存在此子文件,那么返回子文件的字节大小,如果不存在那么返回0
           
        抽象路径要父路径(并且父路径要真实存在,否者会报空指针异常):  
           不可以接受过滤器:
            list()    返回一个字符串数组,这些字符串指定此抽象路径名表示的子文件名和子文件夹名
            listFiles() 返回一个File类型的数组,这些字符串指定此抽象路径名表示的父路径+子文件和子文件夹
            listRoots() 返回一个File类型的数组,列出可用的文件系统根。(比如:盘符)
           可以接受过滤器:
            list(FilenameFilter filter)接受一个过滤器并返回字符串数组,过滤器返回true就存入数组,返回false就不存入(数组存储的是子文件或者子文件夹名)
            listFiles(FileFilter filter)接受一个过滤器并返回字符串数组,过滤器返回true就存入数组,返回false就不存入(数组存储的是父路径+子文件或者子文件夹名)

        自定义过滤器:
            创建一个类并实现FilenameFilter接口中的accept方法,accept方法中写过滤代码
            例如:
                class MyFilter implements FilenameFilter{
                    public boolean accept(File dir, String name){
                        //过滤代码
                    }
                }
            dir : 表示父路径
            name: 表示子文件或者子文件夹
          
        

    下面是一些实例:

    创建:

    public class Demo2 {
        public static void main(String[] args) throws IOException {
            //在D:\新建文件夹 (2)下创建一个a.txt的文件
            File file = new File("D:\新建文件夹 (2)\a.txt"); 
            System.out.println(file.createNewFile());
            
            //在D:\新建文件夹 (2)路径下创建一个bb的文件夹
            File file1 = new File("D:\新建文件夹 (2)\bb");
            System.out.println(file1.mkdir());
            
            //在D:\新建文件夹 (2)路径下创建一个aa\bb\cc的多级文件夹,
            File file2 = new File("D:\新建文件夹 (2)\aa\bb\cc");
            System.out.println(file2.mkdirs());
            
            //修改D:\新建文件夹 (2)路径下的bb文件夹名字为bbbbbbb
            File file3 = new File("D:\新建文件夹 (2)\bbbbbbb");
            System.out.println(file1.renameTo(file3));
            
            //把D:\新建文件夹 (2)路径下bbbbbbb文件夹剪切到D:\目录下
            File file4 = new File("D:\bbbbbbb");
            System.out.println(file1.renameTo(file4));
            
            //把D:\新建文件夹 (2)路径下a.txt文件重命名为aaaa.txt
            File file5 = new File("D:\新建文件夹 (2)\aaaa.txt");
            System.out.println(file.renameTo(file5));
            
            //把D:\新建文件夹 (2)路径下aaaa.txt文件剪切到D:\目录下
            File file6 = new File("D:\aaaa.txt");
            System.out.println(file5.renameTo(file6));
        }
    }

    删除:

    public class Demo3 {
        public static void main(String[] args) {
            //delete()  删除此抽象路径名表示的空文件夹或者文件(立刻删除)
            File file = new File("D:\新建文件夹 (2)\a.txt");
            System.out.println("存在此文件吗?"+file.exists());
            System.out.println("删除成功了吗?"+file.delete());
            System.out.println("删除后文件还存在吗?"+file.exists());
            System.out.println("---------------------------------------");
            //deleteOnExit() 在虚拟机终止时,请求删除此抽象路径名表示的文件夹或文件。(jvm退出时删除)
            File file1 = new File("D:\新建文件夹 (2)\b.txt");
            System.out.println("存在此文件吗?"+file1.exists());
            file1.deleteOnExit();
            System.out.println("删除后还存在此文件吗?"+file1.exists());
        }
    }

    获取:

    public class Demo4 {
        public static void main(String[] args) {
            File file = new File("D:\新建文件夹 (2)\a.txt");
            System.out.println("是否存在a.txt文件"+file.exists());
            
            //getName()返回由此抽象路径名表示的文件夹或文件的名称。(返回子文件夹或者子文件名)
            System.out.println("getName():"+file.getName());
            
            //getParent()返回此抽象路径名表示的父路径名;如果此路径名没有指定父路径,则返回 null。
            System.out.println("getParent()"+file.getParent());
            
            //getPath()返回此抽象路径名的绝对路径名字符串(返回父路径名+子文件或者子文件夹名)。 
            System.out.println("getPath()"+file.getPath());
                    
            //getAbsolutePath()    返回此抽象路径名的绝对路径名字符串(返回父路径+子文件或者子文件夹名)。
            System.out.println("getAbsolutePath()"+file.getAbsolutePath());
            
            //lastModified()如果在此路径下存在此文件或者文件夹,那么返回的是最后一次修改的时间,如果不存在那么返回的是0
            Date date = new Date(file.lastModified());
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            System.out.println("最后一次修改的时间"+dateFormat.format(date));
            
            //length()返回由此抽象路径名表示的文件大小(字节),如果此路径下存在此文件,那么返回文件的字节大小,如果不存在那么返回0
            System.out.println("length()"+file.length());
        }
    }

    class MyFilter implements FilenameFilter{
    
        @Override
        public boolean accept(File dir, String name) {
            // TODO Auto-generated method stub
            return name.endsWith(".txt");
        }
        
    }
    
    public class Demo5 {
        public static void main(String[] args) {
            File file = new File("D:\新建文件夹 (2)");
            System.out.println("是否存在此路径:"+file.exists());
            
            //list()返回一个字符串数组,这些字符串指定此抽象路径名表示的子文件和子文件夹
            String[] strarr1 = file.list();
            for (String temp : strarr1) {
                System.out.print(temp+",");
            }
            
            System.out.println("
    ----------------------");
            //listFiles()返回一个File类型的数组,这些字符串指定此抽象路径名表示的父路径+子文件和子文件夹
            File[] fliearr1 = file.listFiles();
            for (File temp : fliearr1) {
                System.out.print(temp+",");
            }
            
            System.out.println("
    ----------------------");
            //listRoots()返回一个File类型的数组,列出可用的文件系统根。(比如:盘符)
            File[] filearr2 = file.listRoots();
            for (File temp : filearr2) {
                System.out.print(temp+",");
            }
            
            System.out.println("
    ----------------------");
            //list(FilenameFilter filter)接受一个过滤器并返回一个由过滤器过滤的字符串数组,过滤器返回true就存入数组,返回false就不存入(数组存储的是子文件或者子文件夹名)
            String[] strarr2 = file.list(new MyFilter());
            for (String temp : strarr2) {
                System.out.print(temp+",");
            }
            
            System.out.println("
    ----------------------");
            //listFiles(FileFilter filter)接受一个过滤器并返回一个由过滤器过滤的字符串数组,过滤器返回true就存入数组,返回false就不存入(数组存储的是父路径+子文件或者子文件夹名)
            File[] filearr3 = file.listFiles(new MyFilter());
            for (File temp : filearr3) {
                System.out.print(temp+",");
            }
        }
    }

  • 相关阅读:
    单例模式
    自旋锁与互斥锁
    CAS无锁机制原理
    乐观锁和悲观锁
    读写锁
    Java锁机制-重入锁
    原 Linux搭建SVN 服务器2
    原 Linux搭建SVN 服务器
    Sublime Text 3 破解版 + 注册机 + 汉化包 + 教程
    Sublime Text 3 常用插件以及安装方法(转)
  • 原文地址:https://www.cnblogs.com/zjdbk/p/9032360.html
Copyright © 2011-2022 走看看