黑马程序员--java File类课程笔记

 

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

File类用来将文件或文件夹封装成对象,实现对文件与文件夹进行操作。进一步弥补流对象对文件操作与对文件夹操作的局限,具体体现在File类,实现了对包括文件和文件夹包括创建、删除、判断、获取信息等的操作,。而流不具备对文件属性操作的方法,且无法对文件夹进行操作。

    File对象,是文件和目录的抽象表现形式,例如: File f=new File("c:\\abc\\a.txt");/*将c盘下abc目录下已有的或未创建的文件或文件夹(因为a.txt也可以是一个文件夹)a.txt封装成对象。*/

    File类对象的常用属性和方法:

    1.常用属性  static String separator----与系统有关的默认分隔符(实现分隔符的跨平台,在不同平台下表现为不同的分隔符,比如在WIndows操作系统下的分隔符是"\",而Unix的是"/" ),那么在Windows下File.separator就表示为“\”,而在Unix操作系统下表现为“/”。当一个软件涉及到与系统平台相关的分隔符,或者说一款软件包含系统相关分隔符,同时有跨平台需求,就可以使用static String separator。

例如下面的代码:

 

class FileDemo

{

   public static void main(String [] args)

    {

       consMethod();

    }

    public static void consMethod()

    {

        /*将a.txt.封装成File对象,可以将已有的和未出现的文件或者文件封装成对象,但本例对象f1只能在Windows系统下正常运行,不能跨越平台在Unix下运行,原因是Unix版jvm无法将"\\"解析为"/"    */

        File f1=new File("c:\\abc\\zzz\\a.txt");

         /*Flie.separator是系统有关的默认名称分隔符,自动表现在不同OA下的不同分隔符。避免了在不同的操作系统下,需人工切换分隔符的担忧。*/

        File f2=new File("c:"+Flie.separator+"abc"+Flie.separator+"zzz"+Flie.separator+"a.txt");

       //f2对象除了盘符c:的因素外,便可在多个平台间运行。

        System.out.println("f1:"+f1);

        System.out.println("f2:"+f2);

    }

}

    2.常用方法  方法主要包括对文件和文件夹的创建、删除、判断、获取信息四个主要方面。

        1)创建

            boolean  createNewFile():在指定位置上创建文件,如果指定路径上无同名文件则创建此文件,并返回ture。如果该文件已经存在,则不创建,返回false。和输出流不一样,输出流对象一旦建立创建文件,如果指定目录下有同名文件存在,也会被覆盖(相当于删除原来指定目录下的同名文件,再创建一个同名文件,来接收输出流数据,原同名被删除的文件数据不保留!)。

           例如:     

            File f=new File("c:\\abc\\a.txt");                

            f.createNewFile();  //通过File类的createNewFile方法创建一个文件。a.txt即为c盘下的abc目录下的文本文件“a.txt”   此方法抛出throwsIOException异常

            boolean mkdir():创建文件夹(只能创建一级,不能创建多级文件夹)。

            void mkdirs:创建多级文件夹。

            例如:

                   File f=new File("c:\\abc\\dldf\\dgfe\afg");    

                   f.mkdir();//创建不成功,但能编译和运行通过。

                   f.mkdirs();//可以创建多级目录,弥补mkdir()的局限性。

        2)删除

            boolean delete():删除失败返回false.

            void deleteOnExit();在程序退出时删除指定文件。该方法是对delete()的进一步优化,试想两种情况:1、当一个文件同时被当前程序和别的程序占用时,当本程序执行delete()时,会因其他程序对该文件的占用而使delete()执行失败,而该文件本是该用完就可以被删除的垃圾程序,因为本次执行失败而使垃圾文件占据内存空间未被删除……;2、程序在过程中发生异常而终止,而后续的程序代码包含delete()语句需执行对垃圾文件的删除指令,因异常同样被终止,没有执行到。这两种情况都制约了delete的执行。而deleteOnEixt()的意思是,在当虚拟机退出前,执行该语句。删除指定垃圾、或临时文件。

        3)判断

            boolean exists()://判断文件是否存在。

            isFile();//判断表示的文件是否是一个标准文件。

            isDirectory();//判断表示的文件是否是一个目录。

            需注意:一下代码返回的都为false

            public static void method_1()throws IOException

            {

                File f=new File("file.txt");

               /*判断文件对象是否是文件或者目录时,必须要先判断该文件对象封装的内容是否存在。通过exists()方法来判断。*/

                //f.createNewFile();//去掉本行前面的第一个注释,f.isFile返回ture.

               //f.mkdir;                  //去掉本行前面的第一个注释,f.isDirectory返回ture.

                f.isDirectory();           //返回false

                f.isFile();                    //返回false

               /*此处容易错误的理解Flie类将文件和文件夹封装成为一个对象,当成在内存中存在一个实体文件或文件夹,而不是对象,而isFile和isDirectory判断的的是实体文件或文件夹。就像容器类一样,当创建一个容器,里面装的是动物(假设动物是人、猫和狗三种动物抽象出来的父类),而当你要判断容器里面的成员是人还是猫和狗的话,不是要判断父类的共有属性能包含子类三种动物的属性,而是要获取人或猫或狗这三个类的属性和行为来判断。*/

            }

           

            isHidden();//判断指定的文件是否是一个隐藏文件。

            isAbsolute();//判断是否为绝对路径名。

        4)获取信息

           getName();//获取路径名表示的文件或目录的名称。

           getPath();//如果获取到的是相对路径,则返回的是相对路径,如果获取到的是绝对路径则返回的是绝对路径。

           getParent();//该方法返回的是绝对路径中的父目录。如果获取的是相对路径,则返回的是最底层文件或文件夹的上一层目录,如果获取的只是本层单级文件或文件夹,返回null。

           getAbsolutePath();//该方法获取绝对路径,不管文件或文件夹是否被创建,该方法只从File类封装的对象中获取路径,不需要像isFile()和isDirectory()一样,要先判断是否存在文件或文件夹被成功创建(exists())

           long lastModified();获取文件最后一次被修改的时间。

           long length();获取文件的大小

           String []   list(FilenameFilter filter);//返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。-----------简单点讲就是文件和目录按filter条件进行过滤的筛选器

           例如:

import java.io.*;
class fileDemo
{
     public static void main(String[] args)throws IOException
     {
            dirmk();
     }
     public static void dirmk()throws IOException
     {
          File f=new File("abc\\adfa\\dfa");
          f.mkdirs();
          File f1=new File(f,"a.txt");
          f1.createNewFile();
          File f2=new File(f,"b.txt");
          f2.createNewFile();
          File f3=new File(f,"c.txt");
          f3.createNewFile();
          File f4=new File(f,"d.txt");
          f4.createNewFile();
          File f5=new File(f,"e.txt");
          f5.createNewFile();
          File f6=new File(f,"f.txt");
          f6.createNewFile();
          File f7=new File(f,"g.txt");
          f7.createNewFile();
          File f8=new File(f,"g.java");
          f8.createNewFile();
          File f9=new File(f,"r.java");
          f9.createNewFile();
          File f10=new File(f,"t.java");
          f10.createNewFile();
          File f11=new File(f,"h.java");
          f11.createNewFile();
          File f12=new File(f,"j.java");
          f12.createNewFile();
          File f13=new File(f,"dd.java");
          f13.createNewFile();
         String [] arr=f.list(new FilenameFilter ()
         {
              public boolean accept(File dir,String name)
              {
                  return name.endsWith(".txt");//startsWith("e");
              }
         });
         for(String fd:arr)
         {
              System.out.println(fd);
         }
        System.out.println(f.getAbsolutePath());
     }
}
  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值