黑马程序员 File类总结

来源:互联网 发布:c语言中long long 编辑:程序博客网 时间:2024/05/15 06:18

------- android培训、java培训、期待与您交流! -----------------

1.File类概述
  java.io.File类,但是不是流对象,不能读写文件
  以前的流对象,构造方法中,可以传递File类型对象
  File类,将路径和文件夹,进行了对象的封装,提供了很多的,操作路径和文件夹的方法 
  File类本身提供大量方法,操作目录和路径,但是File类需要和IO流配合到一起才能实现功能
 2.构造方法
    2.1  File(File partent,File child)
  根据父路径partent和子路径child组合成新的路径,创建一个新的File对象
注意:父路径是当前路径的上一级路径,是唯一的,如果是盘符,它就没有父路径
          子路径是当前路径的下一级路径,可以有多个
   2.2  File(String pathname)
          根据给定的字符串型pathname转换成抽象路径,创建一个新的File对象
3.常用方法
    3.1 boolean createNewFile()创建一个新文件,如果成功则返回true
    3.2 boolean mkdir() 创建目录,创建成功则返回true,只创建一级文件夹
          boolean mkdirs()创建目录,创建成功则返回true,可以创建多级文件夹
          日后使用创建文件夹的方法的时候,推荐使用mkdirs()可以是单级目录,也可以是多级目录
4. File判断方法
    4.1 boolean exists()  测试File构造方法中封装的路径是否存在 存在则返回true
    4.2 boolean isAbsolute() 判断File构造方法中封装的路径是否是绝对路径
          注意:据对路径带有盘符
    4.3 boolean isDirctory() 判断File构造方法中封装的路径是不是文件夹,如果是则返回true
    4.4 boolean isFile() 判断File构造方法中封装的路径是不是文件,如果是则返回true
5.File类删除方法
    5.1 boolean delete() 删除File构造方法中封装的路径,不走回收站,如果删除成功返回true
     如果删除的路径是一个文件夹,这个文件夹不是空的就不能删除。
    5.2 void deleteOnExit()删除,File构造方法中封装的路径,延迟删除 
          只有在JVM要退出时,才进行尝试删除
6.File类获取方法
    6.1  static File[] listRoots() 返回File类型数组,获取当前系统跟 所有的磁盘全部获取

    6.2  File getAbsoluteFile() 返回File构造方法中,封装的路径的绝对路径

    6.3  String getAbsolutePath() 和 getAbsoluteFile()效果一致
       区别返回值:
       getAbsoluteFile()返回File类型,返回值可以调用File类方法
       getAbsolutePath()返回String类型,返回值可以调用String类方法

    6.4  String getName() 返回名字,结果是String
       获取的是包装的路径的最后那个部分的名字,最后是文件夹,获取文件夹名,如果是文件,获取文件名
       但是路径有没有不管

    6.5  String getParent() 获取File构造方法中,封装的路径的父路径,返回String,用的是String类方法
    6.6  File getParentFile() 获取File构造方法中,封装的路径的父路径,返回File,用的是File类方法

    6.7  String getPath() 将File构造方法中封装的路径,转成String类对象
 7.  File类中的其他常用方法
     7.1  long lastModified()  获取File构造方法 包装文件最后修改时间的毫秒值

    7.2  boolean renameTo(File dest) 修改File构造方法中封装的路径名,重命名
          要修改的文件,和修改后的文件,不在同一个路径,方法出现剪切效果
 8. File类获取方式list开头,非静态的
     8.1  String[] list() 获取File构造方法中,封装的路径下的全部内容
          返回一个String类型数组,只有文件名,文件名获取以后使用String方法
    8.2  File[] listFiles() 获取File构造方法中,封装的路径下的全部内容
          返回一个File类型数组,全路径,文件名获取后使用File方法,首选方法
    8.3  File[] listFile(过滤器),过滤不要的文件
         FileFilter 文件过滤器,接口
       自己定义一个文件过滤器,实现FileFilter接口
 9.递归
     只是一种编程技巧而已,不是Java特有
     递归:就是方法的自身调用,自己调用自己
实例:
     9.1计算1--100的和
     9.2计算10!
     9.3兔子问题
     //递归计算1--100的和
public class RecurrenceDemo {
      public static void main(String[] args) {
           // 计算1到100的和
          System. out .println(method(100));
          System. out .println(diGui(100));
           /*
           * 递归,解决兔子问题,斐波那契数列
           */
          System. out .println(diGui1(12));
     }
      // 兔子问题
      private static int diGui1( int month) {
           if (month == 1)
               return 1;
           if (month == 2)
               return 1;
           return diGui1(month - 1) + diGui1(month - 2);
     }

      // 递归计算
      private static int diGui( int num) {
           if (num == 1)
               return 1;
           return num + diGui(num - 1);
     }
      // 普通的for循环计算
      private static int method( int num) {
           int sum = 0;
           for (int i = 0; i <= num; i++) {
              sum += i;
          }
           return sum;
     }
}
11. 复制文件夹
  单级文件夹
  将C:\\demo  数据源 
  复制到D盘   数据目的
  File  字节流对象
  循环,方法
  实现步骤:
    A. 获取到数据源的文件夹名字
    B. 在数据目的的盘符中,创建一个同名字的文件夹
    C. 遍历数据源,获取数据源中的所有文件
    D. 获取数据源文件名,在数据目的中创建一个同名的文件
    E. IO流读写文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
 * 将"d:\\demo"复制到"e:\\"
 * 单级目录复制
 */
public class CopyDemo {
      public static void main(String[] args) {
           // 传入原文件夹的路径,和目标盘符
           getAllFiles( new File( "d:\\demo" ), new File("e:\\" ));
     }

      private static void getAllFiles(File source, File target) {
           // 1.定义方法,在目标盘中完成同名文件夹的创建
           // 怎么获得同名文件夹的名字?
           // 2.source.getName()方法获得,与目标盘符组合成目标文件夹的路径
          File newTarget = new File(target, source.getName());
          System. out .println(newTarget.getAbsolutePath());
          newTarget.mkdirs(); // 创建目录
           // 3.遍历原文件夹目录,获得所有文件的文件名
          File[] sourceFiles = source.listFiles();
           for (File f : sourceFiles) {
               // 获取数据源文件的文件名
               // String fileName = f.getName();
               // 有了数据源的文件全路径,需要的应该是数据目的全路径"e:\\demo"
               // 4.数据目的的绝对路径中"e:\\demo"是有了,就差文件名了
               //判断f是文件夹还是文件,如果是文件夹,就继续调用本方法继续找子文件,如果是文件直接复制文件
               if (f.isDirectory()) {
                    getAllFiles(f,newTarget);
              } else {
                   File targetFile = new File(newTarget, f.getName());
                    // 5.有了文件名之后,用IO流赋值文件
                    CopyFile(f, targetFile);
              }
          }
     }
      // 定义CopyFile()方法copy文件
      private static void CopyFile(File source, File target) {
           // 创建输入输出流对象
          FileInputStream fis = null ;
          FileOutputStream fos = null ;
           try {
              fis = new FileInputStream(source);
              fos = new FileOutputStream(target);
               int len = 0;
               byte [] bytes = new byte[1024];
               while ((len = fis.read(bytes)) != -1) {
                   fos.write(bytes, 0, len);
                   fos.flush();
              }
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
               try {
                    if (fos != null ) {
                        fos.close();
                   }
              } catch (IOException e) {
                   fos = null ;
              } finally {
                    try {
                         if (fis != null ) {
                             fis.close();
                        }
                   } catch (IOException e) {
                        fis = null ;
                   }
              }
          }
     }
}  

--------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 详细请查看:www.itheima.com

0 0
原创粉丝点击