1. 程式人生 > >Java核心技術 卷二(一)

Java核心技術 卷二(一)

rgs code 一個 dir 字節 per workspace spa 核心技術

書:《Java核心技術 卷二 高級特性 9》

時間:2017.9.4 17:13

1.流

  輸入流:可以從其中讀取一個字節序列的對象;抽象類(InputStream)

  輸出流:可以向其中寫入一個字節序列的對象;抽象類(OutputStream)

    流的來源:文件、網絡連接、內存塊。

  面向字節,所以不方便處理Unicode信息(每個字符使用了多個字節)

    -->Reader & Writer extends 流(實現兩個字節字符)

  InputStream方法:

    abstract int read():讀入一個字節,並返回讀入的字節,結束時返回-1.子類需要覆寫此方法。

    abstract int write(int b):向某個位置寫出一個字節。

      note:這兩個方法在執行時會阻塞線程,直到讀入或寫出完成。

    available:檢查當前可讀入的字節數量

    flush:將緩沖區的流輸出。

  讀寫完成後必須調用close方法關閉流,否則若流過多,將耗盡操作系統資源。

  FIleInputStream & FileOutputStream可以提供附著在一個磁盤文件上的輸入流和輸出流。參數為文件名或完整路徑名。

    使用System.getProperty("user.dir")獲取當前路徑

System.out.println(System.getProperty("
user.dir")); --> D:\WorkSpace\Eclipse\IOTest

    完整路徑時我們需要獲取操作系統的操作符,比如windows下:

System.out.println(File.separator); --> /    

    也可以使用雙反斜杠的寫法:C:\\windows\\123.txt

一個基本的讀文件程序:

import java.io.FileInputStream;

public class IOTest {

    public static void main(String[] args) {
        try {
            FileInputStream fileInputStream 
= new FileInputStream("D:\\WorkSpace\\Eclipse\\IOTest\\123.txt"); int i = fileInputStream.available(); for(int j=0;j<i;j++) { System.out.printf("%c",fileInputStream.read()); } fileInputStream.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

Java核心技術 卷二(一)