程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java對文件的隨機讀寫和緊縮處置操作

Java對文件的隨機讀寫和緊縮處置操作

編輯:關於JAVA

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等),可以將其翻開。敕令提醒符下,法式運轉成果如圖所示:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved