——JAVASE-File类

一、File类
1、定义
File类对象可以代表一个路径, 此路径可以是文件也可以是文件夹。将文件或文件夹封装成对象,方便对文件或文件夹的属性信息进行操作,该类方法可以对这个路径进行各种操作。
2、路径分类
路径分为两种: 绝对路径, 相对路径
绝对路径: 从盘符开始, 是一个固定的路径
相对路径: 不从盘符开始, 相对于某个位置.
3、File类构造方法
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实例。
4、File类常见方法
(1)、创建
boolean createNewFile(),在指定位置创建文件,如文件已经存在则不创建
boolean mkdir() 创建此抽象路径名指定的目录。
boolean mkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

(2)、删除
boolean delete(),删除文件或目录。删除目录时,该目录必须为空才能删除。
void deleteOnExit(),在虚拟机停止时,删除文件或目录
(3)、判断
boolean exists()
测试此抽象路径名表示的文件或目录是否存在。
boolean isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
boolean isFile()
测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden()
测试此抽象路径名指定的文件是否是一个隐藏文件。
boolean isAbsolute()
测试此抽象路径名是否为绝对路径名。
boolean canExecute(),测试文件是否可执行
boolean canRead() ,测试文件是否可读
boolean canWrite(), 测试文件是否可读
注意:当判断文件对象是否是文件或目录时,必须先判断改文件对象是否存在,如果不存在的话isDirectory() 和isFile() 均会为false.
(4)、获取信息
String getPath(),获取此抽象路径名的相对路径名。
String getAbsolutePath() ,获取此抽象路径名的绝对路径名。
String getParent() , 获取此抽象路径名父目录的路径名
long length() 返回由此抽象路径名表示的文件的长度
String getName() 返回由此抽象路径名表示的文件或目录的名称
boolean renameTo(File dest) 重新命名此抽象路径名表示的文件
long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
static File[] listRoots() 列出可用的文件系统根。
String[] list() 获取目录中的文件和目录,包含隐藏文件
String[] list(FilenameFilter filter)列出满足一定条件的文件
File[] listFiles() 列出指定目录下的所有内容

//获取计算机中可用盘符
public static void method_1()
       {
       File[] file=File.listRoots();
           int a=file.length;
       System.out.println(a);
       for(File f:file)
       {
            System.out.println(f);
       }

     }
     //获取F:\\java目录中的所有.txt文件
      public static void method_2()
     {
       File f=new File("F:\\java");
       String[] names=f.list(new FilenameFilter()//匿名内部类
          {
          public boolean accept(File dir,String name)
          {
              System.out.println("dir:"+dir+"name:"+name);
             return name.endsWith(".txt"); 
          }
       });

       System.out.println(names.length);
       for(String name:names)
       {
          System.out.println(name);
       }

      }
      //列出指定目录下的所有内容,包括子目录中的内容
      public static void showFiles(File f)
    {
        File[] f1=f.listFiles();
        for(int x=0;x<f1.length;x++)
        {
           if (f1[x].isDirectory())
           {
               showFiles(f1[x]);//使用递归算法
           }
           else
               System.out.println(f1[x]);
        }
    }
//需求:将指定目录下的JAVA文件存储到一个文本文件中去,建立一个java文件的列表文件
//思路:1,对指定的目录进行递归2.获取递归过程中所有的JAVA文件的路径3.将这些路径存储到集合中4,将集合中的数据写入到一个文件中
import java.io.*;
import java.util.*;
class  getFileNameFile
{
    public static void main(String[] args) throws IOException
    {
        File dir=new File("F:\\java");
        List<File> list=new ArrayList<File>();
        fileAddList(dir,list);
        File f=new File(dir,"day20\\java.txt");
        listAddFile(list,f);
    }
    public static void fileAddList(File dir,List<File> list)
    {
       File[] files=dir.listFiles();
       for(File file:files)
       {
         if(file.isDirectory())
         {
             fileAddList(file,list);
         }
         else 
           {
             if(file.getName().endsWith(".java"))
                list.add(file);
           }

       }
    }
    public static void listAddFile(List<File> list,File f)throws IOException
    {
      BufferedWriter buw=new BufferedWriter(new FileWriter(f));
      for(File fi:list)
      {
         buw.write(fi.getAbsolutePath());
         buw.newLine();
         buw.flush();
      }
    }
}
//删除带内容的目录,删除原理是从里面往外删除,用到递归算法
import java.io.*;
class  DeleteDir
{
    public static void main(String[] args) 
    {
        File f=new File("F:\\day20");
        deleteDir(f);

    }
    public static void deleteDir(File dir)
    {
        System.out.println(dir.getName());
       File[] files=dir.listFiles();
       for (int x=0;x<files.length ;x++ )
       {
           if(files[x].isDirectory())
               deleteDir(files[x]);
           else
               System.out.println(files[x].toString()+"-file-"+files[x].delete());
       }
       System.out.println(dir.getName()+"-*******dir-******"+dir.delete());
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值