1. 程式人生 > 其它 >【Java學習筆記(一百一十六)】之 二進位制資料讀寫, 隨機訪問檔案, ZIP文件

【Java學習筆記(一百一十六)】之 二進位制資料讀寫, 隨機訪問檔案, ZIP文件

技術標籤:Java學習筆記# JavaEEjava

本文章由公號【開發小鴿】釋出!歡迎關注!!!


老規矩–妹妹鎮樓:

一. 二進位制資料讀寫

(一) 概述

文字格式的資料對於測試和除錯非常方便,但是不像二進位制格式那樣高效,下面介紹二進位制格式資料的傳輸。

(二) DataOutput 與 DataInput介面

這兩個介面分別用於二進位制格式寫陣列,字元,boolean值和字串。如writeInt總是將一個整數寫出為4位元組的二進位制數量值,而不管它有多少位,這種對於給定型別的值使用的空間都是相同的,讀寫速度比解析文字要更快。

DataInputStream類實現了DataInput介面,可以使用該介面中的方法,為了從檔案中讀入二進位制資料,可以將DataInputStream於某個位元組源相結合,如下所示:

var in = new DataInputStream(new FileInputStream(“a.txt”));

(三) 隨機訪問檔案

RandomAccessFile類可以在檔案中的任何位置查詢或者寫入檔案,磁碟檔案都是隨機訪問的,通過使用“r”表示讀入,用“rw”表示讀寫作為構造器的第二個引數來制定讀寫方式,如下所示:

var in = new RandomAccessFile(“a.txt”, “r”);

當檔案已RandomAccessFile開啟時,這個檔案不會被刪除,且隨機訪問檔案有一個表示下一個將被讀入或寫出的位元組所處位置的檔案指標,seek()方法可以用來設定該指標的位置,getFilePointer()方法返回該指標的當前位置。該類同時實現了DataInput和DataOutput介面。


(四) ZIP文件

ZIP文件通常以壓縮格式儲存了一個或多個檔案,每個ZIP文件都有一個頭,包含諸如每個檔名字和所使用的壓縮方法等資訊。在Java中,使用ZipInputStream來讀入ZIP文件,若需要瀏覽壓縮文件中的每個單獨項,使用getNextEntry()方法返回一個描述這些項的ZipEntry型別的物件,每次返回後需要呼叫closeEntry()方法來讀入下一項,在讀入最後一項之前不要關閉zin。如下所示:

var zin = new ZipInputStream(new FileInputStream(“a.zip”));
ZipEntry entry;
while((
entry = zin.getNextEntry()) != null){ zin.closeEntry(); } zin.close();

當要寫入到ZIP檔案中時,使用ZipOutputStream,對於希望放入ZIP檔案中的每一項,都要建立一個ZipEntry物件,並使用putNextEntry()方法來寫出新檔案,並將檔案資料傳送到輸出流中。如下所示:

var zout = new ZipOutputStream(new FileOutputStream(“test.zip”));
for all files{
	var ze = new ZipENtry(fileName);
	zout.putNextEntry(ze);
	zout.closeEntry();
}
zout.close();

JAR檔案只是一個帶有清單項的ZIP檔案,可以使用JarInputStream 和 JarOutputStream來讀寫清單項。