Java輸入/輸出(I/O
)處理從源讀取資料並將資料寫入目標。通常,讀取儲存在檔案中的資料或使用I/O
將資料寫入到檔案中。
java.io
和java.nio
包中包含處理輸入/輸出的Java類。java.io
包具有執行I/O
的類。java.nio
包是新的I/O
包。
java.io
包中的類都與基於流的I/O
操作有關。 基於流的I/O
使用流在資料源和Java程式之間傳輸位元組資料。
Java程式每次從一個位元組讀取或寫入一個位元組。這種執行I/O
操作的方法很慢。流可以用於單向資料傳輸。 輸入流只能將資料從資料源傳輸到Java程式,而輸出流只能將資料從Java程式傳輸到資料目標。
新輸入/輸出(NIO)解決了基於流的I/O
中的慢速問題。在NIO
中處理I/O
操作的通道和緩衝區。一個通道就像一個流。它表示資料源和Java程式之間的連線。
通道提供雙向資料傳輸工具,可以使用通道來讀取資料以及寫入資料。可以獲得唯讀通道,只寫通道或讀寫通道。緩衝區是有界資料容器,具有確定其可能包含資料的上限固定容量。
在基於流的I/O
中,可直接將資料寫入流。 在基於通道的I/O
中將資料寫入緩衝區,並將該緩衝區傳遞到將資料寫入資料目標的通道。
當從資料源讀取資料時,向一個通道傳遞一個緩衝區。通道將資料從資料源讀入緩衝區。
Java 7引入了新的輸入/輸出API,它提供了一個新的I/O
API。 它提供了原始檔案I/O
API中缺少的一些功能。它向Java類庫新增了三個包:java.nio.file
,java.nio.file.attribute
和java.nio.file.spi
。
新的輸入/輸出API以統一的方式處理所有檔案系統。新輸入/輸出API提供的檔案系統支援是可延伸的。新的輸入/輸出API支援所有檔案系統上的基本檔案操作(複製,移動和刪除)。它支援符號連結。
它支援存取檔案系統和檔案的屬性。可以建立一個監視服務來監視目錄上的任何事件,例如新增新檔案或子目錄,刪除檔案等。