黑马程序员 java基础24天 IO流--File类

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

一.File类

作用:

用来将文件或者文件夹封装成对象

方便对文件与文件夹的属性信息进行操作

File对象可以作为参数传递给流的构造函数

 

二.File类中常见的方法

常用构造方法:

File (String pathname)

         通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。

File (String parent, String child)

         根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。

了解File类中的常用方法

1.创建文件或者文件夹

 boolean createNewFile():在指定位置创建文件,如果该文件存在,文件创建失败

                          它与输出流不一样,如果文件已经有了,就会覆盖

 

 boolean mkdir:创建下一级目录文件夹

 

 boolean mkdirs:创建下一级多级目录文件夹

                         

2.删除

 boolean  delete();删除失败返回false

 void    deleteOnExit();当程序推出时,删除指定文件

 

3.判断

 boolean  canExecute():文件是否可执行,可true  不可false

 boolean  exists():文件是否存在,定义了还没创建,还是不存在

 

 boolean  isFile():是否是文件

 boolean  isDirectory():是否是文件夹

 

 boolean  isHidden():是否是隐藏

 

 boolean  isAbsolute():是否是绝对路径(不考虑封装的内容是否存在)

 

4.获取信息

 String    getName();

 String    getPath():获取相对路径

 

 String    getAbsolutePath()::获取绝对路径

 File      getAbsoluteFile():获取绝对路径,并封装成了对象

 

 long      lastModified()  返回此抽象路径名表示的文件最后一次被修改的时间。

 long      length()  返回由此抽象路径名表示的文件的长度。

 

 String    getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回null

 

5.修改

 boolean   renameTo(File dest) :重新命名此抽象路径名表示的文件。【类似于剪切功能】

 

【static Stringseparator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。】

 

三.文件过滤

File对象的list方法中接受一个过滤器FilenameFileter的子类对象,复写子类对象中的唯一方法accept(File f,String str),该方法中需要接受一个File文件夹对象。并完成对文件的过滤。

 

代码示例

 

public static void fileNameFilterDemo()

       {

              Filef = new File("F:\\新建文件夹");

 

              String[] arr = f.list(new FilenameFilter()

              {

                     public  boolean accept(File f,String str)

//【file是路径,str是该路径中所有的文件】

                     {

                return  str.endsWith(".txt");

                     }

              });

              for(String s : arr )

              {

                     sop(s);

              }

类似的方法

String[]    list()

        返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录

 

String[]   list(FilenameFilter filter)

          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

 

File[]     listFiles()

         返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。

 File[ ]  listFiles(FilenameFilter filter)

          返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。

 

static File[] listRoots()

         列出可用的文件系统根。

 

四.使用递归列出指定目录下的所有文件

    递归:就是自己调用自己

用递归列出所有文件的主要执行代码为showDir方法块中。该方法获取一个目录文件对象,然后再用listFiles方法获得该文件夹下所有文件对象,通过for循环逐一对文件对象进行遍历,如果该文件对象是文件,则打印出文件名,如果是文件夹对象,则返回调用showDir。实现逐级查找。

递归要注意:

1.限定条件

2.要注意递归的次数,可能导致内存溢出

 

代码示例:

public static String getLevel(int lev){

              StringBuildersb = new StringBuilder();

              sb.append("|--");

              for(intx = 0;x<lev;x++){

                     sb.insert(0,"    ");

              }

              returnsb.toString();

       }

 

       publicstatic void showDir(File dir,int lev){

              sop(getLevel(lev)+dir);

              lev++;

              File[]file  = dir.listFiles();//获得该目录下所有的文件对象

                     for(Filef : file) {

                        if(f.isFile())//如果是文件则打印

                              sop(getLevel(lev)+f);

                        else{

                  showDir(f,lev);//如果是文件夹,则递归

                        }

                  }

       }

 

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值