黑马程序员——JAVASE-File类

来源:互联网 发布:35mm定焦镜头推荐 知乎 编辑:程序博客网 时间:2024/05/29 12:58

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——
一、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());    }}
0 0
原创粉丝点击