1. 程式人生 > >Java基礎鞏固(四)-流(Stream)、檔案(File)和IO

Java基礎鞏固(四)-流(Stream)、檔案(File)和IO

Java流(Stream)、檔案(File)和IO

Java.io 包幾乎包含了所有操作輸入、輸出需要的類。所有這些流類代表了輸入源和輸出目標。
Java.io 包中的流支援很多種格式,比如:基本型別、物件、本地化字符集等等。
一個流可以理解為一個數據的序列。輸入流表示從一個源讀取資料,輸出流表示向一個目標寫資料。

讀取控制檯輸入

讀取字元 read()

public class BRRead {

    public static void main(String[] args) throws IOException {
        char c;
        // 使用System.in 建立 bufferReader
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("輸入字元,按下 'q' 退出"); // 讀取字元 do{ c = (char) bufferedReader.read(); System.out.println(c); }while (c != 'q'); } }

讀取字串 readLine()

public class BRReadLines {

    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String str;
        System.out.println("enter lines of text");
        System.out.println("enter 'end' to quit"
); do { str = bufferedReader.readLine(); System.out.println(str); } while (!str.equals("end")); } }

讀寫檔案

IO流 字元流 & 位元組流

FileinputStream

File f = new File("C:/java/hello");
InputStream out = new FileInputStream(f);

FileoutputStream

File f = new File("C:/java/hello");
OutputStream f = new FileOutputStream(f);
public class FileStreamTest2 {
    public static void main(String[] args) throws IOException {
        File f = new File("a.txt");
        FileOutputStream fop = new FileOutputStream(f);
        // 構建FileOutputStream物件,檔案不存在會自動新建
        OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
        // 構建OutputStreamWriter物件,引數可以指定編碼,預設為作業系統預設編碼,windows上是gbk
        writer.append("中文輸入");
        // 寫入到緩衝區
        writer.append("\r\n");
        // 換行
        writer.append("English");
        // 重新整理快取衝,寫入到檔案,如果下面已經沒有寫入的內容了,直接close也會寫入
        writer.close();
        // 關閉寫入流,同時會把緩衝區內容寫入檔案,所以上面的註釋掉
        fop.close();
        // 關閉輸出流,釋放系統資源
        // 構建FileInputStream物件
        InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
        // 構建InputStreamReader物件,編碼與寫入相同
        StringBuffer sb = new StringBuffer();
        while (reader.ready()) {
            sb.append((char) reader.read());
            // 轉成char加到StringBuffer物件中
        }
        System.out.println(sb.toString());
        reader.close();
        // 關閉讀取流
        fip.close();
        // 關閉輸入流,釋放系統資源
    }
}

console

中文輸入
English

建立目錄

public class CreateDir {
    public static void main(String[] args) {
        String dirname = "/project/lib/alancode";
        File d = new File(dirname);
        // mkdir() :  建立此抽象路徑名指定的目錄。
        // mkdirs() :  建立此抽象路徑名指定的目錄,包括建立必需但不存在的父目錄。
        // 這裡因為沒有 該目錄就使用了 mkdirs 同時 如果沒有指定盤 預設是當前工程所在的盤
        d.mkdirs();
    }
}