Java對文件的隨機讀寫和緊縮處置操作。本站提示廣大學習愛好者:(Java對文件的隨機讀寫和緊縮處置操作)文章只能為提供參考,不一定能成為您想要的結果。以下是Java對文件的隨機讀寫和緊縮處置操作正文
Java中文件的隨機讀寫
Java.io 包供給了 RandomAccessFile 類用於隨機文件的創立和拜訪。應用這個類,可以跳轉到文件的隨意率性地位讀寫數據。法式可以在隨機文件中拔出數據,而不會損壞該文件的其他數據。另外,法式也能夠更新或刪除先前存儲的數據,而不消重寫全部文件。
RandomAccessFile類是Object類的直接子類,包括兩個重要的結構辦法用來創 建RandomAccessFile 的對象,如表所示。
須要留意的是,mode 表現所創立的隨機讀寫文件的操作狀況,其取值包含:
r:表現以只讀方法翻開文件。
rw:表現以讀寫方法翻開文件,應用該形式只用一個對象便可同時完成讀寫操作。
下表列出了 RandowAccessFile 類經常使用的辦法及解釋。
【例】模擬體系日記,將數據寫入到文件尾部。
import java.io.*; class ep10_12{ public static void main(String args[]) throws IOException{ try{ BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String s=in.readLine(); RandomAccessFile myFile=new RandomAccessFile("ep10_12.log","rw"); myFile.seek(myFile.length()); //挪動到文件開頭 myFile.writeBytes(s+"\n"); //寫入數據 myFile.close(); } catch(IOException e){} } }
法式運轉後在目次中樹立一個 ep10_12.log 的文件,每次運轉時輸出的內容都邑在該文件內容的開頭處添加。
Java中文件的緊縮處置
Java.util.zip 包中供給了可對文件的緊縮息爭緊縮停止處置的類,它們繼續自字撙節類OutputSteam 和 InputStream。個中 GZIPOutputStream 和 ZipOutputStream 可分離把數據緊縮成 GZIP 和 Zip 格局,GZIPInpputStream 和 ZipInputStream 又可將緊縮的數據停止復原。
將文件寫入緊縮文件的普通步調以下:
生成和所要生成的緊縮文件相干聯的緊縮類對象。
緊縮文件平日不只包括一個文件,將每一個要參加的文件稱為一個緊縮進口,應用ZipEntry(String FileName)生成緊縮進口對象。
應用 putNextEntry(ZipEntry entry)將緊縮進口參加緊縮文件。
將文件內容寫入此緊縮文件。
應用 closeEntry()停止今朝的緊縮進口,持續下一個緊縮進口。
將文件從緊縮文件中讀出的普通步調以下:
生成和所要讀入的緊縮文件相干聯的緊縮類對象。
應用 getNextEntry()獲得下一個緊縮進口。
【例】輸出若干文件名,將一切文件緊縮為“ep10_13.zip”,再從緊縮文件中解壓並顯示。
import java.io.*; import java.util.*; import java.util.zip.*; class ep10_13{ public static void main(String args[]) throws IOException{ FileOutputStream a=new FileOutputStream("ep10_13.zip"); //處置緊縮文件 ZipOutputStream out=new ZipOutputStream(new BufferedOutputStream(a)); for(int i=0;i<args.length;i++){ //對敕令行輸出的每一個文件停止處置 System.out.println("Writing file"+args[i]); BufferedInputStream in=new BufferedInputStream(new FileInputStream(args[i])); out.putNextEntry(new ZipEntry(args[i])); //設置 ZipEntry 對象 int b; while((b=in.read())!=-1) out.write(b); //從源文件讀出,往緊縮文件中寫入 in.close(); } out.close(); //解緊縮文件並顯示 System.out.println("Reading file"); FileInputStream d=new FileInputStream("ep10_13.zip"); ZipInputStream inout=new ZipInputStream(new BufferedInputStream(d)); ZipEntry z; while((z=inout.getNextEntry())!=null){ //取得進口 System.out.println("Reading file"+z.getName()); //顯示文件初始名 int x; while((x=inout.read())!=-1) System.out.write(x); System.out.println(); } inout.close(); } }
運轉後,在法式目次樹立一個 ep10_13.zip 的緊縮文件,應用解緊縮軟件(如 WinRAR等),可以將其翻開。敕令提醒符下,法式運轉成果如圖所示: