1. 程式人生 > 其它 >IO流 File類

IO流 File類

IO流

I/O(Input,輸入/Output,輸出)

輸入:讀取外部資料(磁碟,光碟等儲存裝置的資料)到程式(記憶體)中

輸出:輸出流的指向是資料要到達的目的地,將程式(記憶體)中的資料輸出到磁碟,光碟等儲存裝置中

輸入流

InputStream是位元組輸入流的抽象類,是所有位元組輸入流的父類

InputStream類是用來處理位元組的,不適合處理文字,Java為字元文字的輸入提供了單獨的類---Reader類,但Reader類並不是InputStream類的替換者,只是在處理字串時簡化了程式設計

Reader類是字元輸入流的抽象類,是所有字元輸入流的父類,方法與InputStream類似

輸出流

OutputStream是位元組輸出流的抽象類,該抽象類是表示輸出位元組流的所有類的父類,該類中所有方法均返回void

Writer類是字元輸出流的抽象類,是所有字元輸出流的父類

File類

此類是Java.io中唯一代表磁碟檔案本身的類

可以通過此方法,實現建立,刪除,重新命名檔案等操作。該類的物件主要用來獲取檔案本身的一些資訊。資料流可以將資料寫進檔案裡,檔案也是資料流最常用的資料媒體

檔案的建立

  1. File(String pathname)

該構造方法通過將給定的路徑名字串轉換為抽象路徑名來建立一個檔案

//new File(String pathname)
//pathname代表路徑名稱(包含檔名)
File file=new File("d:/1.txt");
  1. File(String parent,String child)
//new File(String parent,String child)
//parent:父路徑字串  例如:D:/或D:/doc
//child:子路徑字串   例如:letter.txt
  1. File(File f,String child)
//new File(File f,String child)
//f:父路徑物件  例如:D:/doc/

檔案的刪除

當使用File建立一個檔案後,若不存在這個檔案,File物件可通過呼叫createNewFile()方法建立一個名稱為這個的檔案;如果該檔案存在,可通過檔案物件的delete()方法將其刪除

import java.io.File;

public class File01 {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\Valder\\Desktop\\java筆記\\word.txt");  //建立檔案物件
        if(file.exists()){
            file.delete();
            System.out.println("檔案已刪除");
        }else {
            try{                                //捕捉可能出現的異常
                file.createNewFile();
                System.out.println("檔案已建立");
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}

獲取檔案資訊

常用方法

方法 返回值 說明
getName() String 獲取檔名稱
canRead() boolean 判斷檔案是否為可讀的
canWrite() boolean 判斷檔案是否可被寫入
exits() boolean 判斷檔案是否存在
length() long 獲取檔案長度(以位元組為單位)
getAbsolutePath() String 獲取檔案的絕對路徑
getParent() String 獲取檔案的父路徑
isFile() boolean 判斷抽象路徑名錶示的檔案是否為一個標準檔案
isDirectory() boolean 判斷檔案是否為一個目錄
isHiddden() boolean 判斷檔案是否為隱藏檔案
lastModified() long 獲取檔案最後修改時間
import java.io.File;

public class File01 {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\Valder\\Desktop\\java筆記\\word.txt");  //建立檔案物件
        if(file.exists()){
            String name= file.getName();
            long length= file.length();
            boolean hidden= file.isHidden();
            System.out.println("檔名稱:"+name);
            System.out.println("檔案長度:"+length);
            System.out.println("是否為隱藏檔案:"+hidden);
        }else {
            System.out.println("該檔案不存在");
        }
    }
}
/*
檔名稱:word.txt
檔案長度:6
是否為隱藏檔案:false
*/

mkdir():建立由抽象路徑名錶示的新目錄,返回值為boolean,若建立目錄,返回true,否則返回false

在相應位置建立20個資料夾,用數字1-20命名

import java.io.File;

public class File02 {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\Valder\\Desktop\\java筆記\\新建資料夾");
        if(!file.exists()){
            file.mkdir();
        }
        for (int i = 1; i <= 20; i++) {
            File file1 = new File(file, String.valueOf(i));
            file1.mkdir();
        }
        System.out.println("建立完成");
    }
}

要想刪除只需要把兩個mkdir改為delete即可


列出C盤Windows中所有檔案(夾)

import java.io.File;

public class File03 {
    public static void main(String[] args) {
        File file = new File("C:\\Windows");
        File fs[]=file.listFiles();//調出Windows中的檔案(夾),存在一個數組中
        for(File f: fs){         //遍歷其中的檔案(夾),判斷是哪個,輸出對應種類
            if(f.isFile()){
             System.out.print("檔案:");
            }else{
                System.out.print("資料夾:");
            }
            System.out.println(f.getName());
        }
    }
}