Java核心API之File使用技巧

2025-10-24 12:17:50

1、CPU,内存和硬盘之间的关系

在讲述File对象之前,简单的介绍一下CPU,内存和硬盘之间的关系,深入了解可以自行翻阅资料。

CPU:中央处理器,处理指令和各种数据,通俗讲就像人类的心脏一样,处理数据流。

内存:内存储器,暂时存放CPU要运算的数据,性能要求相对较高。

硬盘:又称磁盘,可以永久的存储数据,但是运算速度较内存低。

如果CPU需要处理数据,直接从硬盘读取,硬盘虽然大,但运算速度低,这样可以导致CPU使用率不高。所以,将CPU要处理的数据,从硬盘取出暂时放在内存上,CPU直接与内存交互,提高CPU使用率,也提高了电脑运行速率。当内存资源不如时,再从硬盘读取数据暂存放内存。

Java核心API之File使用技巧

2、File对象的介绍

在Java程序开发过程中,有时需要访问磁盘数据或存储数据,比如,游戏的状态就是存储到磁盘上的,每一次登录需要访问数据显示游戏状态。

下面都是干货。

java.io包下有许多io(输入/输出)对象,其中包括java.io.File对象,该对象用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录的。File对象有许多方法,不一一列举,主要介绍几个在项目中比较常用的方法。

Java核心API之File使用技巧

3、创建File对象

    /*     

     * new File(String pathname)

     * 通过文件路径创建对象

     */

    @Test   

     public void testNewFile(){       

         File file = new File("demo"+File.separator+"test.txt");        

         System.out.println(file);   

     } 

    /*    

     * new File()  

     * 通过父文件对象和子文件路径创建对象

     */

    @Test    

    public void testNewFile2(){       

        File parent = new File("demo");        

        File file = new File(parent,"test.txt");        

        System.out.println(file);   

     }

File类有许多构造方法,上面是其中两例,有感兴趣的朋友可以深入学习一下。

注意:为了屏蔽平台(window,linux等)差异带来的影响,文件路径分隔符建议用File.separator。

Java核心API之File使用技巧

4、isFile()判断当前File对象是否为文件

   /*     

    *boolean  isFile()     

    *判断当前当前File对象是否为文件     

    */    

    @Test    

    public void testIsFile(){       

        File file = new File("demo"+File.separator+"test.txt");        

        boolean flag = file.isFile();       

        System.out.println(file+"是否文件:"+flag);        

        

        File file2 = new File("demo"+File.separator+"test2.txt");        

        boolean flag2 = file2.isFile();        

        System.out.println(file2+"是否文件:"+flag2);   

    }

isFile()判断File对象是否是文件,有别于isDirectory()方法。

Java核心API之File使用技巧

5、isDirectory()方法判断当前File对象是否为目录

    /*     

     *boolean  isDirectory()     

     *判断当前当前File对象是否为目录    

     */    

     @Test    

     public void testIsDirectory(){        

         File file = new File("demo"+File.separator+"a");        

         boolean flag = file.isDirectory();        

         System.out.println(file+"是否目录:"+flag); 

                

         File file2 = new File("demo"+File.separator+"b");        

         boolean flag2 = file2.isDirectory();        

         System.out.println(file2+"是否目录:"+flag2);    

     }

一般结合isFile()方法可以判断File对象是文件还是目录,然后进行业务处理。

Java核心API之File使用技巧

6、exists()判断路径名表示的文件是否存在

   /*     

    * boolean exists()

    * 判断路径名表示的文件/目录是否存在     

    */    

    @Test    

    public void testExists() throws IOException {        

        File file = new File("demo"+File.separator+"test.txt");        

        if(!file.exists()){            

             file.createNewFile();        

        }        

        System.out.println("创建文件完成");    

    }

该方法常用于创建文件或目录时进行判断,如果文件或目录不存在则进行相应的业务处理。

Java核心API之File使用技巧

7、createNewFile()方法创建新文件

     /*     

      * boolean createNewFile()

      *方法用于创建新文件,创建成功返回true,否则返回false    

      */    

     @Test    

     public void testCreateNewFile() throws IOException {       

         File file = new File("demo"+File.separator+"test.txt");        

         boolean flag = false;        

         if(!file.exists()){            

             flag = file.createNewFile();         

             if(flag){            

                 System.out.println("创建文件成功");        

             }else{            

                 System.out.println("创建文件失败");       

             }     

         }        

              

    }

createNewFile()只负责创建文件,不创建目录,创建成功返回true,否则返回false。

Java核心API之File使用技巧

8、mkdir()创建路径名指定的目录

    /*     

     * boolean mkdir()     

     * 用于创建文件路径名指定的目录     

     */    

     @Test    

     public void testMkdir(){        

         File file = new File("demo");        

         boolean flag = file.mkdir();        

         System.out.println("目录是否创建成功:"+flag);    

    }

mkdir()与mkdirs()的区别,mkdir()创建一个目录,mkdirs()将路径名不存在的目录都创建出来

Java核心API之File使用技巧

9、mkdirs()用于创建路径名指定的所有目录

   /*    

    * boolean mkdirs()     

    * 用于创建文件路径名指定的所有目录     

    */    

    @Test    

     public void testMkdirs(){        

         File file = new File("demo"                    

                                       +File.separator+"a"                      

                                       +File.separator+"b");        

         boolean flag = file.mkdirs();        

         System.out.println("目录是否创建成功:"+flag);    }

注意:mkdir()创建失败时也有可能已经成功创建了一部分目录。

Java核心API之File使用技巧

10、delete()删除路径名表示的文件或目录

   /*     

    * boolean delete()     

    * 用于删除路径名指定的文件或目录     

    */    

     @Test    

     public void testDelete(){        

         File file = new File("demo"+File.separator+"test.txt");        

         file.delete();    

    }

注意:当delete()方法删除目录时,只有目录为空的情况下才可以删除成功。

Java核心API之File使用技巧

Java核心API之File使用技巧

11、listsFiles()返回路径名指定的目录所有子项文件或目录

    /*     

     * File[] listFiles()     

     * 返回抽象路径表示的目录所有子项,包括文件或目录    

     */    

    @Test    

     public void testListFiles(){        

         File file = new File("demo");        

         File[] files = file.listFiles();        

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

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

         }    

     }

Java核心API之File使用技巧

12、FileFilter用于抽象路径名的过滤器

   /*     

    * FileFilter接口用于抽象路径名的过滤     

    */    

    @Test    

     public void testFileFilter(){        

         File file = new File("demo");        

         File[] files = file.listFiles(new FileFilter(){            

              @Override            

               public boolean accept(File fil){                

                   return fil.getName().endsWith(".txt");           

               }        

         });        

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

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

         }    

     }

将此接口传递给File类中listFiles()方法,用于获取满足过滤条件的子项。

Java核心API之File使用技巧

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢