黑马程序员_<<File>>

本文转自:http://blog.csdn.net/u011976033/article/details/12294769

作者:奋斗的路

奋斗的路

--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


1. File

File类是把文件和文件夹封装成了对象,方便操作文件或者是文件夹的属性,在创建的时候有通过构造方法来指定,有三种格式:

new File(“C:\\java\\a.txt”);

new File(“C:\\java”,“a.txt”);//这一种方法比第一种方法的优点是:把路径分开了,可以方便指定同一个文件夹下的文件

new File(“C:”+ File.separator +” java”+”a.txt”);//这一个方法可跨平台的使用,分隔符是跨平台的File.separator。

 

2. 基本方法

       1.创建

创建分为创建文件和创建文件夹(目录)


  1. import java.io.File;  
  2. import java.io.IOException;  
  3.    
  4. public class FileDemo {  
  5.    public static void main(String[] args) throws IOException {  
  6.      /* 指定文件对象 */  
  7.      File f = new File("F:" + File.separator + "java");  
  8.      File file = new File("F:\\java\\a.txt");  
  9.    
  10.      /* 
  11.       * boolean mkdir()创建单级目录,当存在此目录,创建失败(false),否则创建成功(true) 例如:F:\\java 
  12.       * F盘必须存在 F:\\java\123 F:\\java必须存在 boolean 
  13.       * mkdirs()可以创建多级目录,即使前面的目录不存在,那么也会创建,存在此创建失败,不存在创建成功 
  14.       * 例如:F:\\java\day01\\hello 即使F盘中不存在java\\day01 那么使用此方法,也会创建前面不存在的目录 
  15.       * createNewFile() 
  16.       * 创建文件,指定的目录必须存在(F:\\java),如果此目录中存在此文件,此创建失败(false),不存在,则创建成功(true) 
  17.       */  
  18.    
  19.      System.out.println(f.mkdir());// 创建单级目录  
  20.      System.out.println(file.createNewFile());// 创建文件  
  21.      System.out.println(new File("F:\\java\\123\\456").mkdirs());// 创建多级目录  
  22.    }  
  23.    
  24. }  
import java.io.File;
import java.io.IOException;
 
public class FileDemo {
   public static void main(String[] args) throws IOException {
     /* 指定文件对象 */
     File f = new File("F:" + File.separator + "java");
     File file = new File("F:\\java\\a.txt");
 
     /*
      * boolean mkdir()创建单级目录,当存在此目录,创建失败(false),否则创建成功(true) 例如:F:\\java
      * F盘必须存在 F:\\java\123 F:\\java必须存在 boolean
      * mkdirs()可以创建多级目录,即使前面的目录不存在,那么也会创建,存在此创建失败,不存在创建成功
      * 例如:F:\\java\day01\\hello 即使F盘中不存在java\\day01 那么使用此方法,也会创建前面不存在的目录
      * createNewFile()
      * 创建文件,指定的目录必须存在(F:\\java),如果此目录中存在此文件,此创建失败(false),不存在,则创建成功(true)
      */
 
     System.out.println(f.mkdir());// 创建单级目录
     System.out.println(file.createNewFile());// 创建文件
     System.out.println(new File("F:\\java\\123\\456").mkdirs());// 创建多级目录
   }
 
}


 

       2. 删除


   

  1. public class FileDemo {  
  2.    public static void main(String[] args) throws IOException {  
  3.      /* 指定文件对象 */  
  4.      File f = new File("F:" + File.separator + "java");  
  5.      File file = new File("F:\\java\\a.txt");  
  6.    
  7.      /* 
  8.       *  boolean delete()删除文件或者是目录(空的),如果不存在,则是false,存在则删除 
  9.       *  void deleteOnExit()程序退出时删除,即使前面出现了异常,那么在程序结束的时候也会执行此语句,删除此文件 
  10.       */  
  11.    
  12.      System.out.println(f.delete());// 删除目录  
  13.      System.out.println(file.delete());// 删除文件  
  14.       
  15.    }  
  16.    
  17. }  
public class FileDemo {
   public static void main(String[] args) throws IOException {
     /* 指定文件对象 */
     File f = new File("F:" + File.separator + "java");
     File file = new File("F:\\java\\a.txt");
 
     /*
      *  boolean delete()删除文件或者是目录(空的),如果不存在,则是false,存在则删除
      *  void deleteOnExit()程序退出时删除,即使前面出现了异常,那么在程序结束的时候也会执行此语句,删除此文件
      */
 
     System.out.println(f.delete());// 删除目录
     System.out.println(file.delete());// 删除文件
    
   }
 
}

 

       3. 判断

 

  1. import java.io.File;  
  2. import java.io.IOException;  
  3.    
  4. public class FileDemo {  
  5.    public static void main(String[] args) throws IOException {  
  6.      /* 指定文件对象 */  
  7.      File f = new File("F:" + File.separator + "java");  
  8.      File file = new File("F:\\java\\a.txt");  
  9.    
  10.      /* 
  11.       * boolean exists()判断文件或者目录是否存在 boolean isFile()判断是否是文件 boolean 
  12.       * isDirectory()判断是否是目录 boolean isHidden()判断是否是隐藏文件 boolean 
  13.       * isAbsolute()判断是否是绝对路径 
  14.       */  
  15.    
  16.      System.out.println(f.exists());// 是否存在  
  17.      System.out.println(file.isFile());// 是否是文件,若存在,切是文件,那么就是true,否则是false  
  18.      System.out.println(file.isDirectory());// 判断是否是目录,存在且是文件,那么就是true,否则是false  
  19.      System.out.println(file.isAbsolute());// 判断是否是绝对路径  
  20.    }  
  21.    
  22. }  
import java.io.File;
import java.io.IOException;
 
public class FileDemo {
   public static void main(String[] args) throws IOException {
     /* 指定文件对象 */
     File f = new File("F:" + File.separator + "java");
     File file = new File("F:\\java\\a.txt");
 
     /*
      * boolean exists()判断文件或者目录是否存在 boolean isFile()判断是否是文件 boolean
      * isDirectory()判断是否是目录 boolean isHidden()判断是否是隐藏文件 boolean
      * isAbsolute()判断是否是绝对路径
      */
 
     System.out.println(f.exists());// 是否存在
     System.out.println(file.isFile());// 是否是文件,若存在,切是文件,那么就是true,否则是false
     System.out.println(file.isDirectory());// 判断是否是目录,存在且是文件,那么就是true,否则是false
     System.out.println(file.isAbsolute());// 判断是否是绝对路径
   }
 
}


 

         4. 获取

 

boolean renameTo(File dest)重命名,也可以模拟移动哦,重命名到其他文件夹中,那就是移动了


  1. import java.io.File;  
  2. import java.io.IOException;  
  3.    
  4. public class FileDemo {  
  5.    public static void main(String[] args) throws IOException {  
  6.      /* 指定文件对象 */  
  7.      File f = new File("F:" + File.separator + "java");  
  8.      File file = new File("F:\\java\\a.txt");  
  9.    
  10.      /* 
  11.       * String getName()获得文件名称 
  12.       * String getParent()获得上一目录 String 
  13.       * getAbsolutePath()获得绝对路径 
  14.       * long length()获得文件大小 long 
  15.       * lastModified()获得最后一次修改的时间 
  16.       */  
  17.    
  18.      System.out.println(f.getName());// 获得名称  
  19.      System.out.println(file.getName());// 获得名称  
  20.      System.out.println(f.getParent());// 获得上一目录  
  21.      System.out.println(file.getParent());// 获得上一目录  
  22.      System.out.println(f.getAbsolutePath());// 获得绝对路径  
  23.      System.out.println(file.getAbsolutePath());// 获得绝对路径  
  24.    }  
  25.    
  26. }  
  27. 结果:  
  28. java  
  29. a.txt  
  30. F:\  
  31. F:\java  
  32. F:\java  
  33. F:\java\a.txt  
import java.io.File;
import java.io.IOException;
 
public class FileDemo {
   public static void main(String[] args) throws IOException {
     /* 指定文件对象 */
     File f = new File("F:" + File.separator + "java");
     File file = new File("F:\\java\\a.txt");
 
     /*
      * String getName()获得文件名称
      * String getParent()获得上一目录 String
      * getAbsolutePath()获得绝对路径
      * long length()获得文件大小 long
      * lastModified()获得最后一次修改的时间
      */
 
     System.out.println(f.getName());// 获得名称
     System.out.println(file.getName());// 获得名称
     System.out.println(f.getParent());// 获得上一目录
     System.out.println(file.getParent());// 获得上一目录
     System.out.println(f.getAbsolutePath());// 获得绝对路径
     System.out.println(file.getAbsolutePath());// 获得绝对路径
   }
 
}
结果:
java
a.txt
F:\
F:\java
F:\java
F:\java\a.txt


 

3.常用方法

 

  1. public class FileDemo {  
  2.    
  3.    public static void main(String[] args) throws IOException {  
  4.      /* 
  5.       * String[] list()获得指定文件下的所有文件或者目录的名称(包含隐藏文件活目录) 
  6.            String[] list(FilenameFilter filter)获得名称的时候加入了过滤器(包含隐藏文件活目录) 
  7.       * File[] listFiles()获得的是指定文件下的所有File对象(包含隐藏文件活目录) 
  8.       *  File[] listFiles(FilenameFilter filter)加入了过滤器(包含隐藏文件活目录) 
  9.       *  static File[]listRoots()列出了可用目录的根 
  10.       */  
  11.      /* 获得所有的根目录,并打印出 */  
  12.      File[] rootFiles = File.listRoots();  
  13.      for (File f : rootFiles)  
  14.         System.out.println(f);  
  15.      /* 获得F盘下的所有文件或者目录的名称,并打印出 */  
  16.      String[] fileNames = new File("F:\\").list();  
  17.      System.out.println("-----------------\n所有名称");  
  18.      for (String name : fileNames)  
  19.         System.out.println(name);  
  20.      /* 获得F盘下的所有.txt文件安的名称,并打印出,使用的是过滤器,使用匿名内部类,复写accept方法 */  
  21.      String[] fileTxtNames = new File("F:\\").list(new FilenameFilter() {  
  22.         public boolean accept(File dir, String name) {// 此方法决定是否把其名字过滤  
  23.           return name.endsWith(".txt");  
  24.         }  
  25.      });  
  26.      System.out.println("-----------------\n.txt文件");  
  27.      for (String n : fileTxtNames)  
  28.         System.out.println(n);  
  29.      /*File[] listFiles()用法和list()用法一样,只是返回的是File对象数组*/  
  30.      File [] Files=new File("F:\\").listFiles();  
  31.      System.out.println("-----------------");  
  32.      for(File f:Files)  
  33.         System.out.println(f.getName()+":"+f.length());  
  34.    }  
  35.    
  36. }  
  37. 结果:  
  38. C:\  
  39. D:\  
  40. E:\  
  41. F:\  
  42. G:\  
  43. -----------------  
  44. 所有名称  
  45. $RECYCLE.BIN  
  46. A  
  47. B  
  48. ClassDemo.java  
  49. Config.Msi  
  50. demo.txt  
  51. demo1.txt  
  52. exception.log  
  53. IP地址.doc  
  54. itat  
  55. java培训视频  
  56. jsp  
  57. music  
  58. System Volume Information  
  59. SystemInfo.txt  
  60. voa  
  61. yy  
  62. 录音  
  63. 新建文本文档.txt  
  64. 照片  
  65. 电子书  
  66. 随笔知识点  
  67. 黑马  
  68. 黑马笔记  
  69. -----------------  
  70. .txt文件  
  71. demo.txt  
  72. demo1.txt  
  73. SystemInfo.txt  
  74. 新建文本文档.txt  
  75. -----------------  
  76. $RECYCLE.BIN:4096  
  77. A:0  
  78. B:0  
  79. ClassDemo.java:682  
  80. Config.Msi:0  
  81. demo.txt:6  
  82. demo1.txt:8  
  83. exception.log:123  
  84. IP地址.doc:58368  
  85. itat:4096  
  86. java培训视频:4096  
  87. jsp:4096  
  88. music:28672  
  89. SystemVolume Information:0  
  90. SystemInfo.txt:1904  
  91. voa:0  
  92. yy:0  
  93. 录音:4096  
  94. 新建文本文档.txt:29  
  95. 照片:4096  
  96. 电子书:4096  
  97. 随笔知识点:4096  
  98. 黑马:4096  
  99. 黑马笔记:16384  
public class FileDemo {
 
   public static void main(String[] args) throws IOException {
     /*
      * String[] list()获得指定文件下的所有文件或者目录的名称(包含隐藏文件活目录)
           String[] list(FilenameFilter filter)获得名称的时候加入了过滤器(包含隐藏文件活目录)
      * File[] listFiles()获得的是指定文件下的所有File对象(包含隐藏文件活目录)
      *  File[] listFiles(FilenameFilter filter)加入了过滤器(包含隐藏文件活目录)
      *  static File[]listRoots()列出了可用目录的根
      */
     /* 获得所有的根目录,并打印出 */
     File[] rootFiles = File.listRoots();
     for (File f : rootFiles)
        System.out.println(f);
     /* 获得F盘下的所有文件或者目录的名称,并打印出 */
     String[] fileNames = new File("F:\\").list();
     System.out.println("-----------------\n所有名称");
     for (String name : fileNames)
        System.out.println(name);
     /* 获得F盘下的所有.txt文件安的名称,并打印出,使用的是过滤器,使用匿名内部类,复写accept方法 */
     String[] fileTxtNames = new File("F:\\").list(new FilenameFilter() {
        public boolean accept(File dir, String name) {// 此方法决定是否把其名字过滤
          return name.endsWith(".txt");
        }
     });
     System.out.println("-----------------\n.txt文件");
     for (String n : fileTxtNames)
        System.out.println(n);
     /*File[] listFiles()用法和list()用法一样,只是返回的是File对象数组*/
     File [] Files=new File("F:\\").listFiles();
     System.out.println("-----------------");
     for(File f:Files)
        System.out.println(f.getName()+":"+f.length());
   }
 
}
结果:
C:\
D:\
E:\
F:\
G:\
-----------------
所有名称
$RECYCLE.BIN
A
B
ClassDemo.java
Config.Msi
demo.txt
demo1.txt
exception.log
IP地址.doc
itat
java培训视频
jsp
music
System Volume Information
SystemInfo.txt
voa
yy
录音
新建文本文档.txt
照片
电子书
随笔知识点
黑马
黑马笔记
-----------------
.txt文件
demo.txt
demo1.txt
SystemInfo.txt
新建文本文档.txt
-----------------
$RECYCLE.BIN:4096
A:0
B:0
ClassDemo.java:682
Config.Msi:0
demo.txt:6
demo1.txt:8
exception.log:123
IP地址.doc:58368
itat:4096
java培训视频:4096
jsp:4096
music:28672
SystemVolume Information:0
SystemInfo.txt:1904
voa:0
yy:0
录音:4096
新建文本文档.txt:29
照片:4096
电子书:4096
随笔知识点:4096
黑马:4096
黑马笔记:16384


 

4. 输出目录下的所有内容

 

利用的是递归算法

 

  1. import java.io.File;  
  2. import java.io.FilenameFilter;  
  3. import java.io.IOException;  
  4.    
  5. public class FileDemo {  
  6.    
  7.    public static void main(String[] args) throws IOException {  
  8.      File file = new File("F:\\黑马");  
  9.      showDir(file, 0);  
  10.    }  
  11.    
  12.    /* 格式方式 */  
  13.    public static String show(int level) {  
  14.      StringBuilder sb = new StringBuilder();  
  15.      sb.append("|-");  
  16.      for (int i = 0; i < level; i++) {  
  17.         sb.insert(0"  ");  
  18.      }  
  19.      return sb.toString();  
  20.    }  
  21.    
  22.    /* 利用递归显示 */  
  23.    public static void showDir(File dir, int level) {  
  24.      System.out.println(show(level) + dir.getName());  
  25.      level++;  
  26.      File[] Files= dir.listFiles();  
  27.      for (int x = 0; x < Files.length; x++) {  
  28.         if (Files[x].isDirectory()){// 若是目录,继续递归  
  29.            showDir(Files[x], level);  
  30.         } else {  
  31.           System.out.println(show(level) + Files[x].getName());  
  32.         }  
  33.      }  
  34.    }  
  35. }  
  36. 结果:  
  37. |-heima  
  38.   |-Game.rar  
  39.   |-Java常用英语汇总.doc  
  40.   |-java特性.jpg  
  41.   |-思维导图  
  42.     |-01-Java 概述.png  
  43.     |-02-Java基础语法.png  
  44.     |-03-面向对象.png  
  45.   |-面试测试题  
  46.     |-aa.java  
  47.     |-exam.zip  
  48.   |-黑马活动  
  49.     |-DVD管理系统----附带代码  
  50.       |-DVD管理系统简介.doc  
  51.     |-公约数和公倍数---附带代码  
  52.       |-gysAndgbs.java  
  53.       |-Person.java  
  54.       |-sushu.java  
  55.       |-公约数,公倍数和素数.doc  
  56.     |-员工打卡系统----附带代码  
  57.       |-员工打卡系统.doc  
  58.     |-打印系统----附带代码  
  59.       |-打印系统.doc  
  60.     |-提交作业验证系统---附带代码  
  61.       |-作业提交验证.doc  
  62.     |-算法--迭代和递归---附带代码  
  63.       |-方程的解-迭代,递归.doc  
  64.       |-方程解---代码.doc  
  65.       |-方程解---迭代图.png  
  66.       |-阶乘--递归---代码.doc  
  67.       |-阶乘运行结果案例.png  
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
 
public class FileDemo {
 
   public static void main(String[] args) throws IOException {
     File file = new File("F:\\黑马");
     showDir(file, 0);
   }
 
   /* 格式方式 */
   public static String show(int level) {
     StringBuilder sb = new StringBuilder();
     sb.append("|-");
     for (int i = 0; i < level; i++) {
        sb.insert(0, "  ");
     }
     return sb.toString();
   }
 
   /* 利用递归显示 */
   public static void showDir(File dir, int level) {
     System.out.println(show(level) + dir.getName());
     level++;
     File[] Files= dir.listFiles();
     for (int x = 0; x < Files.length; x++) {
        if (Files[x].isDirectory()){// 若是目录,继续递归
           showDir(Files[x], level);
        } else {
          System.out.println(show(level) + Files[x].getName());
        }
     }
   }
}
结果:
|-heima
  |-Game.rar
  |-Java常用英语汇总.doc
  |-java特性.jpg
  |-思维导图
    |-01-Java 概述.png
    |-02-Java基础语法.png
    |-03-面向对象.png
  |-面试测试题
    |-aa.java
    |-exam.zip
  |-黑马活动
    |-DVD管理系统----附带代码
      |-DVD管理系统简介.doc
    |-公约数和公倍数---附带代码
      |-gysAndgbs.java
      |-Person.java
      |-sushu.java
      |-公约数,公倍数和素数.doc
    |-员工打卡系统----附带代码
      |-员工打卡系统.doc
    |-打印系统----附带代码
      |-打印系统.doc
    |-提交作业验证系统---附带代码
      |-作业提交验证.doc
    |-算法--迭代和递归---附带代码
      |-方程的解-迭代,递归.doc
      |-方程解---代码.doc
      |-方程解---迭代图.png
      |-阶乘--递归---代码.doc
      |-阶乘运行结果案例.png


 

5. 删除文件夹

思路:

从里向外删除,先删除文加夹中的文件。当文件没了,然后在删除此空文件夹,因为文件夹中有文件的话,删除不了。所以先清除里面的文件。使用的也是递归。

 

  1. import java.io.File;  
  2.    
  3. public class DeleteFileDemo {  
  4.    public static void main(String[] args) {  
  5.      File file = new File("F:\\heima");  
  6.      deleteDir(file);  
  7.    
  8.    }  
  9.    
  10.    public static void deleteDir(File dir) {  
  11.      File[] files = dir.listFiles();  
  12.      for (int i = 0; i < files.length; i++) {  
  13.         if (files[i].isDirectory())  
  14.           deleteDir(files[i]);  
  15.         else  
  16.           System.out.println(files[i].delete());  
  17.      }  
  18.      System.out.println(dir.delete());  
  19.    }  
  20.    
  21. }  
import java.io.File;
 
public class DeleteFileDemo {
   public static void main(String[] args) {
     File file = new File("F:\\heima");
     deleteDir(file);
 
   }
 
   public static void deleteDir(File dir) {
     File[] files = dir.listFiles();
     for (int i = 0; i < files.length; i++) {
        if (files[i].isDirectory())
          deleteDir(files[i]);
        else
          System.out.println(files[i].delete());
     }
     System.out.println(dir.delete());
   }
 
}


 

6.     练习

一个文件夹中的文件路径存到一个文件中,这样可以方便我们查找。

思路:

           1. 遍历文件夹中的所有文件,找到我们符合条件的文件,然后存到一个集合中。

          2. 遍历此集合,然后存到一个文件中。


  1. import java.io.BufferedWriter;  
  2. import java.io.File;  
  3. import java.io.FileWriter;  
  4. import java.io.IOException;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7.    
  8. public class Demo {  
  9.    
  10.   public static void main(String[] args) throws IOException {  
  11.     File file= new File("F:\\黑马笔记");  
  12.     File filepath = new File("F:\\doc.txt");  
  13.     List<File> list = new ArrayList<File>();  
  14.     getFile(file,list);  
  15.     writerToFile(list, filepath);  
  16.     System.out.println("OVER");  
  17.   }  
  18.    
  19.   /* 遍历列表,将其存到集合中 */  
  20.   public static void getFile(File dir, List<File> listFiles) {  
  21.     File[] files = dir.listFiles();  
  22.     /* 遍历列表,存到集合中 */  
  23.     for (File f : files) {  
  24.       if (f.isDirectory()) {  
  25.          getFile(f, listFiles);  
  26.       } else {  
  27.          if (f.getName().endsWith(".doc"))// 判断是否是doc文件  
  28.            listFiles.add(f);  
  29.       }  
  30.     }  
  31.    
  32.   }  
  33.    
  34.   /* 遍历集合,写到文件中 */  
  35.   public static void writerToFile(List<File> listFiles, File FilePaths)  
  36.       throws IOException {  
  37.     BufferedWriter bw = new BufferedWriter(new FileWriter(FilePaths));// 定义的写入流  
  38.     /* 遍历集合,把其写到文件中 */  
  39.     for (File f : listFiles) {  
  40.       bw.write(f.getAbsolutePath());// 将绝对路径写到文件中  
  41.       bw.newLine();  
  42.       bw.flush();  
  43.     }  
  44.     bw.close();  
  45.   }  
  46. }  
  47. 结果:  
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
public class Demo {
 
  public static void main(String[] args) throws IOException {
    File file= new File("F:\\黑马笔记");
    File filepath = new File("F:\\doc.txt");
    List<File> list = new ArrayList<File>();
    getFile(file,list);
    writerToFile(list, filepath);
    System.out.println("OVER");
  }
 
  /* 遍历列表,将其存到集合中 */
  public static void getFile(File dir, List<File> listFiles) {
    File[] files = dir.listFiles();
    /* 遍历列表,存到集合中 */
    for (File f : files) {
      if (f.isDirectory()) {
         getFile(f, listFiles);
      } else {
         if (f.getName().endsWith(".doc"))// 判断是否是doc文件
           listFiles.add(f);
      }
    }
 
  }
 
  /* 遍历集合,写到文件中 */
  public static void writerToFile(List<File> listFiles, File FilePaths)
      throws IOException {
    BufferedWriter bw = new BufferedWriter(new FileWriter(FilePaths));// 定义的写入流
    /* 遍历集合,把其写到文件中 */
    for (File f : listFiles) {
      bw.write(f.getAbsolutePath());// 将绝对路径写到文件中
      bw.newLine();
      bw.flush();
    }
    bw.close();
  }
}
结果:


 



--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值