JAVA:IO流——File類
2、可以使用File 類中的方法對檔案進行操作
所有的 io 操作都儲存在 java.io 包中。
構造方法:public File (String pathname)
直接根據路徑找到檔案。
1. 建立一個新檔案
建立檔案: public boolean createNewFile() throws IOException
假設:現在要在d 盤上建立一個doc.txt 檔案。
- import java.io.*;
- import java.io.IOException;
- public class FileDemo{
- File file=new File("d:"+File.separator+"doc.txt"); // ("d:\\doc.txt")分隔符的使用,兩個反斜槓
- try{
- file.createNewFile();
- }catch(IOException e){
- e.printStackTrace();
- }
- }
在各個作業系統中,實際上路徑的分隔符是不一樣的,例如:
windows 中使用反斜槓:“\”
linux 中使用正斜槓:“/”
如果想讓 JAVA 程式的可移植性繼續保持,則最好根據所在的作業系統來自動使用分隔符File.separator。
File.pathSeparator與File.separator的區別?
前者為分號 ; 後者為冒號 :
- import java.io.File ;
- import java.io.IOException ;
- publicclass FileDemo02{
- publicstaticvoid main(String args[]){
- System.out.println("pathSeparator:" + File.pathSeparator) ; // 呼叫靜態常量
- System.out.println("separator:" + File.separator) ; // 呼叫靜態常量
- }
- };
如果想讓 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.綜合建立、刪除檔案的操作
現在以下一個要求:給定一個路徑,如果此檔案存在,則刪除;如果檔案不存在則建立一個新的檔案。
- import java.io.File ;
- import java.io.IOException ;
- publicclass FileDemo06{
- publicstaticvoid main(String args[]){
- File f = new File("d:"+File.separator+"test.txt") ; // 例項化File類的物件
- if(f.exists()){ // 如果檔案存在則刪除
- f.delete() ; // 刪除檔案
- }else{
- try{
- f.createNewFile() ; // 建立檔案,根據給定的路徑建立
- }catch(IOException e){
- e.printStackTrace() ; // 輸出異常資訊
- }
- }
- }
- };
從程式的執行結果中可以發現,所有的操作並不會立刻執行,因為JAVA 是通過JVM 與底層進行互動的,所以所有的操作需要經過JVM完成,那麼就可能產生延遲。
提示:對於檔案的字尾,是可有可無的。
4.建立一個資料夾
使用mkdir() 方法建立一個資料夾 public boolean mkdir()
- import java.io.File ;
- import java.io.IOException ;
- publicclass FileDemo07{
- publicstaticvoid main(String args[]){
- File f = new File("d:"+File.separator+"mldn") ; // 例項化File類的物件
- f.mkdir() ; // 建立資料夾
- }
- };
5.列出指定目錄的全部檔案
如果現在給出了一個目錄,則可以直接列出目錄中的內容,但是列出的方法在File 類中存在兩個:
操作一: 使用list() 列出全部內容以字串陣列的形式返回:public String[] list() 返回路徑下所有檔案的名
以 File 陣列的形式返回: public File[] listFiles() 返回所以檔案的路徑
- import java.io.File ;
- import java.io.IOException ;
- publicclass FileDemo08{
- publicstaticvoid main(String args[]){
- File f = new File("d:"+File.separator) ; // 例項化File類的物件
- String str[] = f.list() ; // 列出給定目錄中的內容
- for(int i=0;i<str.length;i++){
- System.out.println(str[i]) ;
- }
- }
- };
操作二: 使用listFiles() 列出全部內容(帶路徑)
- import java.io.File ;
- import java.io.IOException ;
- publicclass FileDemo09{
- publicstaticvoid main(String args[]){
- File f = new File("d:"+File.separator) ; // 例項化File類的物件
- File files[] = f.listFiles() ; // 列出全部內容
- for(int i=0;i<files.length;i++){
- System.out.println(files[i]) ;
- }
- }
- };
後者列出的是一個完整的路徑,這樣對於程式本身來說是很容易操作的。
6.判斷一個給定的路徑是否是目錄(即,是否是資料夾)
在File 類中直接使用: public boolean isDirectory()
取得檔案的路徑: public boolean getPath()
給定路徑,判斷是否是目錄
- import java.io.File ;
- import java.io.IOException ;
- publicclass FileDemo10{
- publicstaticvoid main(String args[]){
- File f = new File("d:"+File.separator) ; // 例項化File類的物件
- if(f.isDirectory()){ // 判斷是否是目錄
- System.out.println(f.getPath() + "路徑是目錄。") ;
- }else{
- System.out.println(f.getPath() + "路徑不是目錄。") ;
- }
- }
- };
7、要求:列出指定目錄的全部內容
如果給定了一個目錄,則要求將此目錄中的全部檔案都列出來,但是列的時候還會存在子資料夾。
應該採用遞迴的呼叫形式。
- import java.io.File ;
- import java.io.IOException ;
- publicclass FileDemo11{
- publicstaticvoid main(String args[]){
- File my = new File("d:" + File.separator) ; // 操作路徑
- print(my) ;
- }
- publicstaticvoid print(File file){ // 遞迴呼叫
- if(file!=null){ // 判斷物件是否為空
- if(file.isDirectory()){ // 如果是目錄
- File f[] = file.listFiles() ; // 列出全部的檔案
- if(f!=null){ // 判斷此目錄能否列出
- for(int i=0;i<f.length;i++){
- print(f[i]) ; // 因為給的路徑有可能是目錄,所以,繼續判斷
- }
- }
- }else{
- System.out.println(file) ; // 輸出路徑
- }
- }
- }
- };