【Java】-- 输入/ 输出:探究java.io の File(文件类)

File(文件类)

File类直接操作文件和文件系统。

File类没有指定信息怎样从文件读取或向文件存储;

它描述了文件本身的属性。

File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径。

此外,File还浏览子目录层次结构。

 

 

Java 中的目录当成File  对待,它具有附加的属性——一个可以被 list( ) 方法检测的文件名列表。

  1. File(String directoryPath)  
  2. File(String directoryPath, String filename)  
  3. File(File dirObj, String filename) 
  1. File file = new File("D:/"); 
  2. File file2 = new File("D:/""test.txt"); 
  3. File file3 = new File(file, "test.txt"); 
  4. //file2和file3指向相同的文件 

 

File 定义了很多获取File对象标准属性的方法

  1. getName()   // 返回文件名 
  2. getPath()   // 返回目录 
  3. getParent() // 返回父目录名 
  4. exists()    // 判断文件是否存在 true存在 
  5. //其他的查看api 

特殊方法

  isFile()在文件被调用的时候返回true,在目录被调用的时候返回false,可用来判断是否是文件执行

  isAbsolute()在文件拥有绝对路径时返回true,相对路径时返回false

file还包含两个实用的方法

  1. renameTo()
    1. //文件命名成功返回true,命名失败返回false  
    2. boolean renameTo(File newName) 
  2. delete()
    1. //当文件目录为空时删除目录,删除成功返回true 删除失败返回false 
    2. boolean delete( )  

其他一些新增方法

  1. void deleteOnExit() //在java 虚拟机终止时删除与调用对象相关的文件 
  2. boolean isHidden()  //判断调用文件是否隐藏 
  3. boolean setReadOnly() //设置调用文件为只读 

一、目录

目录是一个包含其他文件和路径列表的File类

当你创建一个file对象且他/她是目录时,调用isDirectory()返回ture,这时 可以调用list() 返回一个String数组对象  包含该目录内部其他文件和目录的列表

  1. //返回该目录下的文件和目录的列表 
  2. String[ ] list() 

例子:将D盘的文件和目录列表输出

  1. public static void main(String[] args) { 
  2.     File file = new File("D:/"); 
  3.     String list[] = file.list(); 
  4.     for (int i = 0; i < list.length; i++) { 
  5.         System.out.print(list[i]+"  "); 
  6.     } 
  7.  
  8.     // 输出结果 
  9.     // ↓↓↓ 
  10.     // $RECYCLE.BIN  AppServ  Baidu  Config.Msi  Foxmail 7.0  MyDrivers  Program Files  samples  System Volume Information  TDDownload  test.txt  WorkSpace  微云网盘   

 


二、FilenameFilter

 

你总是希望能够限制由list( )方法返回的文件数目,使它仅返回那些与一定的文件名方式或者过滤(filter) 相匹配的文件

  1. //FFObj 是一个实现FilenameFilter 接口的类的对象。 
  2. String[] list(FilenameFilter FFObj)  

FilenameFilter 仅定义了一个方法,accept( ) 。该方法被列表中的每个文件调用一次

  1. boolean accept(File directory, String filename)  

 

当被directory  指定的目录中的文件(也就是说,那些与filename  参数匹配的文件)包含在列表中时,accept( ) 方法返回true  ,当这些文件没有包括在列表中时,accept( ) 返回false 。

  1. class EndWith implements FilenameFilter { 
  2.  
  3.     private String str; 
  4.  
  5.     /** 
  6.      * @param str 
  7.      *            文件后缀 
  8.      * */ 
  9.     public EndWith(String str) { 
  10.         this.str = "." + str; 
  11.     } 
  12.  
  13.     @Override 
  14.     public boolean accept(File dir, String name) { 
  15.         // TODO Auto-generated method stub 
  16.         return name.endsWith(str); 
  17.     } 
  18.  
  19.  
  20. public class Example { 
  21.  
  22.     public static void main(String[] args) { 
  23.         File file = new File("D:/"); 
  24.         // 返回后缀为txt的列表 
  25.         FilenameFilter filenameFilter = new EndWith("txt"); 
  26.         String list[] = file.list(filenameFilter); 
  27.         for (int i = 0; i < list.length; i++) { 
  28.             System.out.print(list[i] + "  "); 
  29.         } 
  30.     } 
  31.  
  32.     // 输出结果 
  33.     // ↓↓↓ 
  34.     // test.txt   

三、listFiles()方法

  1. 以File对象矩阵的形式返回文件列表,而不是用字符串形式返回 
  2. //返回所有的文件 
  3. File[] listFiles( )  
  4. //返回满足指定FilenameFilter 接口的文件 
  5. File[] listFiles(FilenameFilter FFObj)  
  6. //返回满足指定FileFilter 的路径名的文件 
  7. File[] listFiles(FileFilter FObj)  

FileFilter 只定义了一个accept( ) 方法,该方法被列表中的每个文件调用一次

  1. boolean accept(File path)   
  2. //如果文件被包括在列表中(即与path 参数匹配的文件),accept( ) 方法返回true ,如果不被包括,则返回false. 

四、创建目录

  1. mkdir()

     mkdir( )方法创建了一个目录,创建成功返回true ,创建失败返回false。

    创建失败是指File对象指定的目录已经存在,或者是因为整个路径不存在而不能创建目录。

  2. mkdirs()
     用mkdirs( )的方法。它创建目录以及该目录所有的父目录

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章