JAVA:IO流——File类

1、掌握File 类的作用

2、可以使用File 类中的方法对文件进行操作

所有的 io 操作都保存在 java.io 包中。

构造方法:public File (String pathname) 

直接根据路径找到文件。

 

1. 创建一个新文件

创建文件: public boolean createNewFile() throws IOException

假设:现在要在d 盘上创建一个doc.txt 文件。

  1.  import java.io.*;
  2. import java.io.IOException;
  3. public class FileDemo{
  4.   File file=new File("d:"+File.separator+"doc.txt");  //     ("d:\\doc.txt")分隔符的使用,两个反斜杠
  5. try{
  6.   file.createNewFile();
  7. }catch(IOException e){
  8.   e.printStackTrace();
  9. }
  10. } 

在各个操作系统中,实际上路径的分隔符是不一样的,例如:

windows 中使用反斜杠:“\”

linux 中使用正斜杠:“/”

如果想让 JAVA 程序的可移植性继续保持,则最好根据所在的操作系统来自动使用分隔符File.separator

 File.pathSeparator与File.separator的区别?

前者为分号 ; 后者为冒号 :

[java] view plaincopy
 
  1. import java.io.File ;  
  2. import java.io.IOException ;  
  3. public class FileDemo02{  
  4.     public static void main(String args[]){  
  5.         System.out.println("pathSeparator:" + File.pathSeparator) ; // 调用静态常量  
  6.         System.out.println("separator:" + File.separator) ; // 调用静态常量  
  7.     }  
  8. };  

如果想让 JAVA 程序继续保持可移植性,那么在编写路径的时候就应该使用 File 类中的常量。

 注意:在操作文件的时候一定要注意分隔符,使用 File.separator 表示。

 

2. 删除一个指定的文件

public boolean delete()    将之前建立的文件,删除掉。先判断文件是否存在 

在File 类中可以使用 exists() 方法判断一个文件是否存在:public boolean exists() 

import java.io.File;
import java.io.IOException;
public calss FileDemo{
public static void main(String args[]){
File file=new File("d:"+File.separaor+"doc.txt");  //找到文件路径
if(file.exists()){  //如果文件存在
file.delete();
}
}
}

3.综合创建、删除文件的操作

 

现在以下一个要求:给定一个路径,如果此文件存在,则删除;如果文件不存在则创建一个新的文件。

[java] view plaincopy
 
  1. import java.io.File ;  
  2. import java.io.IOException ;  
  3. public class FileDemo06{  
  4.     public static void main(String args[]){  
  5.         File f = new File("d:"+File.separator+"test.txt") ;     // 实例化File类的对象  
  6.         if(f.exists()){ // 如果文件存在则删除  
  7.             f.delete() ;    // 删除文件  
  8.         }else{  
  9.             try{  
  10.                 f.createNewFile() ;     // 创建文件,根据给定的路径创建  
  11.             }catch(IOException e){  
  12.                 e.printStackTrace() ;   // 输出异常信息  
  13.             }  
  14.         }  
  15.     }  
  16. };  

从程序的运行结果中可以发现,所有的操作并不会立刻执行,因为JAVA 是通过JVM 与底层进行交互的,所以所有的操作需要经过JVM完成,那么就可能产生延迟。

提示:对于文件的后缀,是可有可无的。

4.创建一个文件夹

使用mkdir() 方法创建一个文件夹   public boolean mkdir()

 
[java] view plaincopy
 
  1. import java.io.File ;  
  2. import java.io.IOException ;  
  3. public class FileDemo07{  
  4.     public static void main(String args[]){  
  5.         File f = new File("d:"+File.separator+"mldn") ;     // 实例化File类的对象  
  6.         f.mkdir() ; // 创建文件夹  
  7.     }  
  8. };  

5.列出指定目录的全部文件

如果现在给出了一个目录,则可以直接列出目录中的内容,但是列出的方法在File 类中存在两个:

以字符串数组的形式返回:public String[] list()   返回路径下所有文件的名

以 File 数组的形式返回: public File[] listFiles() 返回所以文件的路径

操作一: 使用list() 列出全部内容
[java] view plaincopy
 
  1. import java.io.File ;  
  2. import java.io.IOException ;  
  3. public class FileDemo08{  
  4.     public static void main(String args[]){  
  5.         File f = new File("d:"+File.separator) ;        // 实例化File类的对象  
  6.         String str[] = f.list() ;   // 列出给定目录中的内容  
  7.         for(int i=0;i<str.length;i++){  
  8.             System.out.println(str[i]) ;  
  9.         }  
  10.     }  
  11. };  
操作二: 使用listFiles() 列出全部内容(带路径)
[java] view plaincopy
 
  1. import java.io.File ;  
  2. import java.io.IOException ;  
  3. public class FileDemo09{  
  4.     public static void main(String args[]){  
  5.         File f = new File("d:"+File.separator) ;        // 实例化File类的对象  
  6.         File files[] = f.listFiles() ;  // 列出全部内容  
  7.         for(int i=0;i<files.length;i++){  
  8.             System.out.println(files[i]) ;  
  9.         }  
  10.     }  
  11. };  
后者列出的是一个完整的路径,这样对于程序本身来说是很容易操作的。

6.判断一个给定的路径是否是目录(即,是否是文件夹)

在File 类中直接使用: public boolean isDirectory()
取得文件的路径:   public boolean getPath()
 

给定路径,判断是否是目录

[java] view plaincopy
 
  1. import java.io.File ;  
  2. import java.io.IOException ;  
  3. public class FileDemo10{  
  4.     public static void main(String args[]){  
  5.         File f = new File("d:"+File.separator) ;        // 实例化File类的对象  
  6.         if(f.isDirectory()){    // 判断是否是目录  
  7.             System.out.println(f.getPath() + "路径是目录。") ;  
  8.         }else{  
  9.             System.out.println(f.getPath() + "路径不是目录。") ;  
  10.         }  
  11.     }  
  12. };  

7、要求:列出指定目录的全部内容 

如果给定了一个目录,则要求将此目录中的全部文件都列出来,但是列的时候还会存在子文件夹。

应该采用递归的调用形式。 

[java] view plaincopy
 
  1. import java.io.File ;  
  2. import java.io.IOException ;  
  3. public class FileDemo11{  
  4.     public static void main(String args[]){  
  5.         File my = new File("d:" + File.separator) ; // 操作路径  
  6.         print(my) ;  
  7.     }  
  8.     public static void print(File file){    // 递归调用  
  9.         if(file!=null){ // 判断对象是否为空  
  10.             if(file.isDirectory()){ // 如果是目录  
  11.                 File f[] = file.listFiles() ;   // 列出全部的文件  
  12.                 if(f!=null){    // 判断此目录能否列出  
  13.                     for(int i=0;i<f.length;i++){  
  14.                         print(f[i]) ;   // 因为给的路径有可能是目录,所以,继续判断  
  15.                     }  
  16.                 }  
  17.             }else{  
  18.                 System.out.println(file) ;  // 输出路径  
  19.             }  
  20.         }  
  21.     }  
  22. };  
posted @ 2013-12-07 22:14  keep--moving  阅读(352)  评论(0编辑  收藏  举报