file

一、       Api 1.6.0说明

java.io
类 File

java.lang.Object

java.io.File

所有已实现的接口:

Serializable, Comparable<File>

public class File

extends Object

implements Serializable, Comparable<File>

文件和目录路径名的抽象表示形式。

用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录。此类呈现分层路径名的一个抽象的、与系统无关的视图。抽象路径名有两个组件:

1、一个可选的与系统有关的前缀 字符串,比如盘符,"/" 表示 UNIX 中的根目录,"\\\\" 表示 Microsoft Windows UNC 路径名。

2、零个或更多字符串名称 的序列。

抽象路径名中的第一个名称是目录名,对于 Microsoft Windows UNC 路径名则是主机名。抽象路径名中第一个名称之后的每个名称表示一个目录;最后一个名称既可以表示目录,也可以表示文件。抽象路径名没有前缀和名称序列。

路径名字符串与抽象路径名之间的转换与系统有关。将抽象路径名转换为路径名字符串时,每个名称与下一个名称之间用一个默认分隔符 隔开。默认名称分隔符由系统属性file.separator 定义,可通过此类的公共静态字段 separatorseparatorChar使其可用。将路径名字符串转换为抽象路径名时,可以使用默认名称分隔符或者底层系统支持的任何其他名称分隔符来分隔其中的名称。

无论是抽象路径名还是路径名字符串,都可以是绝对 路径名或相对 路径名。绝对路径名是完整的路径名,不需要任何其他信息就可以定位它所表示的文件。相反,相对路径名必须使用取自其他路径名的信息进行解释。默认情况下,java.io 包中的类总是根据当前用户目录来解析相对路径名。此目录由系统属性 user.dir指定,通常是 Java 虚拟机的调用目录。

调用此类的 getParent()方法可以获取抽象路径名的 路径名,它由路径名前缀以及路径名名称序列中的每个名称(最后一个除外)组成。对于任何具有绝对抽象路径名的File 对象,如果其绝对抽象路径名以某个目录的绝对路径名开头,那么该目录的绝对路径名是该 File 对象的祖先。例如,抽象路径名 "/usr" 表示的目录是路径名"/usr/local/bin" 所表示目录的一个祖先。

在处理 UNIX 平台的根目录,以及 MicrosoftWindows 平台的盘符、根目录和 UNC 路径名时,将用到前缀这一概念。如下所示:

1、对于 UNIX 平台,绝对路径名的前缀始终是"/"。相对路径名没有前缀。表示根目录的绝对路径名的前缀为 "/" 且名称序列为空。

2、对于 MicrosoftWindows 平台,包含盘符的路径名前缀由驱动器号和一个 ":" 组成。如果路径名是绝对路径名,还可能后跟"\\"。UNC 路径名的前缀是 "\\\\";主机名和共享名是名称序列中的前两个名称。没有指定驱动器的相对路径名没有前缀。

此类的实例可能表示(也可能不表示)实际文件系统对象,如文件或目录。如果它表示这种对象,那么该对象驻留在一个分区 中。分区是文件系统特定于操作系统的存储分区。一个存储设备(例如,物理磁盘驱动器、闪存、CD-ROM)可以包含多个分区。对象(如果有)将驻留在此路径名(绝对形式)某个祖先指定的分区上。

文件系统可以实现对实际文件系统对象上的某些操作(比如,读、写、执行)进行限制。这些限制统称为访问权限。文件系统可以对一个对象设置多个访问权限。例如,一个设置可能适用于对象的所有者,另一个设置则可能适用于所有其他用户。对象上的访问权限可能导致此类的某些方法执行失败。

File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。

从以下版本开始: JDK1.0

另请参见: 序列化表格

二、       Construct

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 实例。

  

public static void main(String[] args){

      File f1=new File("e:\\fileTest\\1.txt");

      System.out.println(f1);

      File f2=new File("e:\\fileTest","1.txt");

      System.out.println(f2);

      File f3=new File("e:\\fileTest");

      File f4=new File(f3,"1.txt");

      System.out.println(f4);

   }

三、       Method

(一)            创建新的文件

boolean

createNewFile()
          当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

 

如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false。

 

 

 

public static boolean create() throws IOException{

      File f1=new File("e:\\fileTest\\fileTest.txt");

      return f1.createNewFile();

}

(二)            删除

 boolean

delete()
          删除此抽象路径名表示的文件或目录。

 

如果此路径名表示一个目录,则该目录必须为空才能删除。

当且仅当成功删除文件或目录时,返回 true;否则返回 false。

public static boolean delete() throws Exception{

      File f1=new File("e:\\fileTest");

      return f1.delete();

}

(三)            创建目录

 boolean

mkdir()
          创建此抽象路径名指定的目录。

 

当且仅当已创建目录时,返回 true;否则返回 false。

public static booleancreateDir() throwsException{

      File f1=new File("e:\\fileTest\\fileTest\\fileTest");

      return f1.mkdir();   

}

(四)            创建目录系列

 boolean

mkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

 

创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。注意,此操作失败时也可能已经成功地创建了一部分必需的父目录。

public static booleancreateDirs() throwsException{

      File f1=new File("e:\\fileTest\\fileTest\\fileTest\\1.txt");

      return f1.mkdirs();     

}

注意:创建目录时,即便单个目录名为类似.txt等的文件后缀名的形式,实际上,创建的还是文件目录而不是文件。

(五)            重命名

 boolean

renameTo(File dest)
          重新命名此抽象路径名表示的文件。

 

此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作不是不可分的,如果已经存在具有目标抽象路径名的文件,那么该操作可能无法获得成功。应该始终检查返回值,以确保重命名操作成功。

当且仅当重命名成功时,返回 true;否则返回 false。

public static boolean rename() throws Exception{

      File f1=new File("e:\\fileTest\\fileTest.txt");

      File f2=new File("e:\\fileTest\\fileTest2.jgp");

      return f1.renameTo(f2);

}

(六)            判断文件或目录的相关属性

 boolean

isAbsolute()
          测试此抽象路径名是否为绝对路径名。

 boolean

isDirectory()
          测试此抽象路径名表示的文件是否是一个目录。

 boolean

isFile()
          测试此抽象路径名表示的文件是否是一个标准文件。

 boolean

isHidden()
          测试此抽象路径名指定的文件是否是一个隐藏文件。

 long

lastModified()

 boolean

canExecute()
          测试应用程序是否可以执行此抽象路径名表示的文件。

 boolean

canRead()
          测试应用程序是否可以读取此抽象路径名表示的文件。

 boolean

canWrite()
          测试应用程序是否可以修改此抽象路径名表示的文件。

 boolean

exists()
          测试此抽象路径名表示的文件或目录是否存在。


      System.out.println(f4.isAbsolute());

      System.out.println(f4.isDirectory());

      System.out.println(f4.isFile());

      System.out.println(f4.isHidden());

      System.out.println(f4.canExecute());

      System.out.println(f4.canRead());

      System.out.println(f4.canWrite());

      System.out.println(f4.exists());

(七)            File类的获取功能

 File

getAbsoluteFile()
          返回此抽象路径名的绝对路径名形式。

 String

getAbsolutePath()
          返回此抽象路径名的绝对路径名字符串。

 File

getCanonicalFile()
          返回此抽象路径名的规范形式。

 String

getCanonicalPath()
          返回此抽象路径名的规范路径名字符串。

 long

getFreeSpace()
          返回此抽象路径名指定的分区中未分配的字节数。

 String

getName()
          返回由此抽象路径名表示的文件或目录的名称。

 String

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

 File

getParentFile()
          返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。

 String

getPath()
          将此抽象路径名转换为一个路径名字符串。

 long

getTotalSpace()
          返回此抽象路径名指定的分区大小。

 long

getUsableSpace()
          返回此抽象路径名指定的分区上可用于此虚拟机的字节数。

 long

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

 long

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

      System.out.println(f4.getAbsoluteFile());

      System.out.println(f4.getAbsolutePath());

      System.out.println(f4.getCanonicalPath());

      System.out.println(f4.getCanonicalFile());

      System.out.println(f4.getFreeSpace());

      System.out.println(f4.getName());

      System.out.println(f4.getParent());

      System.out.println(f4.getParentFile());

      System.out.println(f4.getPath());

      System.out.println(f4.getTotalSpace());

      System.out.println(f4.getUsableSpace());

      System.out.println(f4.lastModified());

      System.out.println(f4.length());

(八)            获得直接的文件或文件夹

 String[]

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

 File[]

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

   public staticvoidgetFileList() throwsException{

      File f1=new File("e:\\fileTest");

      File[] fileList=f1.listFiles();

      for(File file:fileList){

         System.out.println(file);

      }

   }

   public staticvoidgetStringList() throws Exception{

      File f1=new File("e:\\fileTest");

      String[] stringList=f1.list();

      for(String str:stringList){

         System.out.println(str);

      }

   }

(九)            综合案例

1.       查找单层含有指定内容的文件或目录

查找e:\fileTest目录下是否含有.txt结尾的文件。如果有,打印。

1)       直接设置条件查找

   public staticvoidgetFile() throwsException{

      File f1=new File("e:\\fileTest");

      String strList[]=f1.list();

      for(String str:strList){

         File f2=new File(f1,str);

            if(f2.isFile()&&f2.toString().endsWith(".txt")){

                System.out.println(f2);

         }

      }

   }



   public staticvoidgetFile2() throwsException{

      File f1=new File("e:\\fileTest");

      File files[]=f1.listFiles();

      for(File file:files){

         if(file.isFile()&&file.toString().endsWith(".txt")){

            System.out.println(file);

         }

      }

   }

2)       使用文件名过滤器查找

String[]

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


 

public class MyFilenameFilter implements FilenameFilter{

   public booleanaccept(File dir,String name){

      File f1=new File(dir,name);

      return f1.isFile()&&name.endsWith(".txt");

   } 

}

   public staticvoidgetFileByFilter() throws Exception{

      File f1=new File("e:\\fileTest");

      String strList[]=f1.list(newMyFilenameFilter());

      for(String str:strList){

         File f2=new File(f1,str);

         System.out.println(f2.getAbsolutePath());

      }

}

 File[]

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

public class MyFileFilter implements FileFilter{

   public booleanaccept(File pathname){

      return pathname.isFile()&&pathname.toString().endsWith(".txt");

   } 

}

   public staticvoidgetFile2ByFilter() throws Exception{

      File f1=new File("e:\\fileTest");

      File files[]=f1.listFiles(newMyFileFilter());

      for(File file:files){

         System.out.println(file);

      }

   }

2.       查找指定目录下所有层含有指定内容的文件或目录

查找e:\fileTest目录下所有含有.txt结尾的文件。如果有,打印。

   public staticList<File> scanFile(List<File> fileExist,File file){

      if(file==null){

         throw new RuntimeException("目标文件夹为空");

      }

      if(!file.exists()){

         throw new RuntimeException("目标文件夹不存在");

      }

      if(!file.isDirectory()){

         throw new RuntimeException("目标文件夹不是文件夹");

      }

      File[] files=file.listFiles();

      for(File f1:files){

         if(f1.isDirectory()){

            scanFile(fileExist,f1);

         }else{

            if(f1.toString().endsWith(".txt")){

                System.out.println(f1);

                fileExist.add(f1);

            }

         }

      }

      return fileExist;

   }

测试

   public staticvoidmain(String[] args)throwsException{

      List<File> fileExist=null;

      File testFile=new File("e:\\fileTest\\2.txt");

      List<File> fileExistResult=scanFile(fileExist,testFile);

      if(fileExistResult==null){

         System.out.println("没有找到符合条件的文件");

      }

      System.out.println(fileExistResult);

   }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值