黑马程序员_<<File>>

来源:互联网 发布:淘宝评论不见了 编辑:程序博客网 时间:2024/05/21 17:13

本文转自: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.创建

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


[java] view plaincopyprint?
  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. }  


 

       2. 删除


   

[java] view plaincopyprint?
  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. }  

 

       3. 判断

 

[java] view plaincopyprint?
  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. }  


 

         4. 获取

 

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


[java] view plaincopyprint?
  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  


 

3.常用方法

 

[java] view plaincopyprint?
  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  


 

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

 

利用的是递归算法

 

[java] view plaincopyprint?
  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  


 

5. 删除文件夹

思路:

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

 

[java] view plaincopyprint?
  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. }  


 

6.     练习

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

思路:

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

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


[java] view plaincopyprint?
  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. 结果:  


 



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

 


0 0
原创粉丝点击