File

         1) java中的File类是为了操作文件,而不是文件中的内容,要操作文件中的内容需要使用FileInputStream等输入输出流

         2) 创建文件

               1. 创建单个文件

         File f = new File("g.txt");
         f.createNewFile();
              2. 创建一级文件夹

         File dir = new File("wenjiaja");
         dir.mkdir();
              3. 创建多级文件夹

         File dirs = new File("e:"+File.separator+"c"+File.separator+"d");
         //File dirs = new File("e:d1\\d2\\d3");
         System.out.println(dirs.getAbsolutePath());
         dirs.mkdirs();
                  两者效果相同,都是在e盘下创建c、d两级目录(推荐使用第一种,可以跨平台)
         3) 判断文件是否存在、类型

                1. 文件是否存在    

         f.exists()
                2. 是否是文件

         f.isFile()
                3. 是否是文件夹

         f.isDirectory()
         4) 删除
               1. 如果是单个文件或者最底层文件夹,直接删除

          f.delete();
               2. 如果是多级文件夹,则需要递归删除(先删除文件夹中的文件,再删除文件夹)

          private void deleteDirs(File dirs) {
              for(File f:dirs.listFiles())
              {
                 if(true == f.isFile())
                    f.delete();
                 else
                    deleteDirs(f);
	       }
               dirs.delete();
          }
          5) 获得文件信息

                1. 获得文件总大小     

          f.length()
                2. 获得文件的绝对路径

          f.getAbsolutePath()
                3. 获得文件名称

          f.getName()
               4. 获得文件的父文件夹

          f.getParent()
                 注意:是按传入的路径看的,如果传入路径是相对路径,只有一个文件名,那么就会返回null

         6) 获得所有文件

               1. 显示系统中所有可用的盘(c、d、e)

          File[] f = File.listRoots();
                说明:静态方法,直接调用即可
               2. 获得文件夹下所有文件的文件名(包括文件夹)

          File f = new File("c:\\");
          String[] names = f.list();
          for(String name:names)
            System.out.println(name);
               3. 获得经过过滤的文件名称

          File file = new File("c:\\");

          String[] names = file.list(new FilenameFilter()
          {
              @Override
              public boolean accept(File dir, String name)
              {
                   if(name.endsWith(".log"))
                       return true;
                   else
                       return false;
               }
	  });
                 FilenameFilter是一个接口,可以通过匿名内部类来实现

                4. 获得文件夹下所有文件的File对象

         File[] files = file.listFiles();
                5. 获得文件夹及其子文件夹下的所有文件

         public void getFile(File file)
         {
             if(file.isFile())
                System.out.println(file.getAbsolutePath());
             else
             {
                File[] fs = file.listFiles();
                for(File f:fs)
                  getFile(f);
              }
          }

               附注:

              1)java中的相对路径

                  1.   java创建File需要传入一个文件的路径,路径可以是绝对路径和相对路径。

                  2.  绝对路径很好理解,在windows下只要给出从盘符到所有级别文件夹的完整路径即可。

                  3.  相对路径指的就是jvm启动的路径,可以通过System.getProperty("user.dir")来获得。(假设有一java源文件Example.javad盘根目录下,该文件不含package信息.我们进入命令行窗口,然后使用d:命令切换到d盘根目录下,然后用javac Example.java来编译此文件,编译无错后,会在d盘根目录下自动生成Example.class文件.我们在调用java Example来运行该程序.此时我们已经启动了一个jvm,这个jvm是在d盘根目录下被启动的,所以此jvm所加载的程序中File类的相对路径也就是相对这个路径的,d盘根目录:D:\.同时 当前用户目录也是D:\.System.getProperty(user.dir);系统变量user.dir存放的也是这个值.

                 4. .\表示当前目录
             File f = new File(".\\");
             System.out.println(f.getAbsolutePath());
                 5. 在Eclipse中情况

                     Eclipse启动jvm都是在项目的根目录下启动的。比如有个项目叫做oa,完整路径为E:\work\java\code\oa,那么这个路径就是jvm的启动路径了,使用System.getProperty("user.dir"),输出的就是E:\work\java\code\oa

                 6. 在Tomcat中情况

                     在Tomcat中执行web应用,执行如下代码时:

             File f = new File(".\\");
             System.out.println(f.getAbsolutePath());
                     输出的是Tomcat的bin目录,说明Tomcat是在bin中启动jvm的,更确切的说是catalina.sh或c atalina.bat

            2) java中File类的分隔符

                 1. 在windows和linux下的路径分隔符是不一样的,如果使用同样的路径,跨平台使用时会抛异常
                 2 .比如要创建一个test.txt的文件

                    在windows下:

          File file1 = new File ("C:\tmp\test.txt");
                    在Linux下:

          File file2 = new File ("/tmp/test.txt");
                  所以为了考虑跨平台性,则应使用如下写法:

          File myFile = new File("C:" + File.separator + "tmp" + File.separator, "test.txt");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值