黑马程序员技术交流社区

标题: File类的方法总结和练习 [打印本页]

作者: Sakuratossi    时间: 2014-9-4 00:12
标题: File类的方法总结和练习
1. File类

File 类在整个 IO 包中与文件本身有关的操作类,所有的与文件本身有关指的是创建、删除文件等操作。

在 java.io 包中的 File 类本身是一个跨平台的文件操作类,所以在操作中要更多的考虑到各个操作系统的区别。

File 即指文件也指文件夹。

File 类构造方法和字段摘要

static String separator路径分隔符,window 下是"\"。

File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 File(String pathname)         通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 File(URI uri) 通过将给定的 file: /URI 转换为一个抽象路径名来创建一个新的 File 实例。

File 的相关方法

String getName():返回文件名或路径名(若是路径,返回最后一级子路径名) String getPath():返回对象对应的路径名
File getAbsoluteFile():返回绝对路径
String getAbsolutePath():返回对象对应的绝对路径
String getParent():返回文件目录的上一级目录名
boolean renameTo(File newName):重命名此 File 对象对应的文件或目录,若重命名成功返回 true; boolean exists():判断对象对应的文件或目录是否存在;
boolean canWrite():判断对象对应文件或目录是否可写;
boolean canRead():判断对象对应文件或目录是否可读;
boolean isFile():判断对象是文件,不是目录;
boolean isDirectory() 判断对象的文件是否是一个目录;
boolean isAbsolute() 判断对象对应文件或目录是否为绝对路径名;
boolean createNewFile() 当且仅当不存在,该方法创建一个该 File 对象所指定的新文件,创建成功返回 true。 boolean delete():删除 File 对象所对应的文件或路径;
boolean mkdir() 创建 File 对象所对应的目录,调用该方法的 File 对象必须对应路径,而不是文件。
String[] list():列出 File 对象的所有子文件名和路径名。
File[] listFiles():列出 File 对象的所有子文件和路径。 static File[] listRoots():列出系统所有的根路径;

2、递归(Recursion)
现在要求输出一个给定目录中的全部文件的路径。 本程序肯定只能依靠递归的操作完成,因为在一个给定的路径下有可能还是文件夹,那么如果是文件夹的话则肯 定要继续列出,重复判断。
递归:程序调用自身的编程技巧
递归就是在方法里调用自身;
在使用递归时,必须有一个明确的递归结束条件,称为递归出口。

  1. /*
  2. 将指定目录下的.java文件的绝对路径存到一个文本文件中。
  3. 1.目录递归
  4. 2. 获取.java文件
  5. 3. 将java文件存到list集合中
  6. 4. 将集合的java文件绝对路径 通过流对象 存储到指定文本文件中
  7. */


  8. import java.io.*;
  9. import java.util.*;
  10. class FileDemODiGui1
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 File dir = new File("/Users/liumin/Desktop/test/D8");
  15.                 List<File> list = new ArrayList<File>();
  16.                 getJavaFile(dir,list);
  17.                 saveJavaFile(list,"/Users/liumin/Desktop/test/javalist.txt");
  18.         }

  19.         public static void getJavaFile(File dir, List<File> list)
  20.         {
  21.                 try
  22.                 {
  23.                         File[] files = dir.listFiles();

  24.                         for(int x = 0; x < files.length; x++)
  25.                         {
  26.                                 if(files[x].isDirectory())
  27.                                         getJavaFile(files[x],list);
  28.                                 else
  29.                                 {
  30.                                         if(files[x].getName().endsWith(".java"))
  31.                                                 list.add(files[x]);
  32.                                 }
  33.                         }                       
  34.                 }
  35.                 catch (Exception e) {
  36.                         throw new RuntimeException("列出指定目录文件失败");
  37.                 }
  38.         }
  39.         public static void saveJavaFile(List<File> list, String filename)
  40.         {
  41.                 BufferedWriter bufw = null;
  42.                 try
  43.                 {
  44.                         bufw = new BufferedWriter(new FileWriter(filename));
  45.                         for(File file : list)
  46.                         {
  47.                                 bufw.write(file.getAbsolutePath());
  48.                                 bufw.newLine();
  49.                                 bufw.flush();
  50.                         }               
  51.                 }
  52.                 catch (Exception e)
  53.                 {
  54.                         throw new RuntimeException("列出指定目录文件失败");
  55.                 }
  56.                 finally
  57.                 {
  58.                         try
  59.                         {
  60.                                 if(bufw!=null)
  61.                                         bufw.close();       
  62.                         }
  63.                         catch (Exception e)
  64.                         {
  65.                                 throw new RuntimeException("关闭流失败");
  66.                         }
  67.                 }
  68.         }
  69. }
复制代码

作者: 1169646761    时间: 2014-9-4 01:00
给顶一下下
作者: 张周飞    时间: 2014-9-4 09:36
有点晕,学习了
作者: 碎流    时间: 2014-9-4 10:10
晕啊,                 顶
作者: 小糊涂神    时间: 2014-9-4 10:17
看的有点蒙。
作者: 沙拉很好吃    时间: 2014-9-4 10:34
不错,不错,学习,学习!:)
作者: dreamseekerkun    时间: 2014-9-4 18:04
总结详细,感谢分享。
作者: wfaly    时间: 2014-9-6 14:44
学习了.....Thanks
作者: 塞纳河的悲伤    时间: 2014-9-6 18:55
谢谢分享了
作者: 范鹏霄    时间: 2014-9-6 21:07
谢谢分享了
作者: 新新人类嘿嘿嘿    时间: 2014-9-6 22:11
学习日志内容吗?自己总结的?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2