欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java對文件的隨機讀寫以及壓縮處理操作

 更新時間:2015年10月07日 17:02:10   投稿:goldensun  
這篇文章主要介紹了Java對文件的隨機讀寫以及壓縮處理操作,是Java入門學習中的基礎知識,需要的朋友可以參考下

Java中文件的隨機讀寫
Java.io 包提供了 RandomAccessFile 類用于隨機文件的創(chuàng)建和訪問。使用這個類,可以跳轉到文件的任意位置讀寫數(shù)據(jù)。程序可以在隨機文件中插入數(shù)據(jù),而不會破壞該文件的其他數(shù)據(jù)。此外,程序也可以更新或刪除先前存儲的數(shù)據(jù),而不用重寫整個文件。

RandomAccessFile類是Object類的直接子類,包含兩個主要的構造方法用來創(chuàng) 建RandomAccessFile 的對象,如表所示。

需要注意的是,mode 表示所創(chuàng)建的隨機讀寫文件的操作狀態(tài),其取值包括:
r:表示以只讀方式打開文件。
rw:表示以讀寫方式打開文件,使用該模式只用一個對象即可同時實現(xiàn)讀寫操作。

下表列出了 RandowAccessFile 類常用的方法及說明。

【例】模仿系統(tǒng)日志,將數(shù)據(jù)寫入到文件尾部。

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"); //寫入數(shù)據(jù)
      myFile.close();
    }
    catch(IOException e){}
  }
}

程序運行后在目錄中建立一個 ep10_12.log 的文件,每次運行時輸入的內容都會在該文件內容的結尾處添加。

Java中文件的壓縮處理
Java.util.zip 包中提供了可對文件的壓縮和解壓縮進行處理的類,它們繼承自字節(jié)流類OutputSteam 和 InputStream。其中 GZIPOutputStream 和 ZipOutputStream 可分別把數(shù)據(jù)壓縮成 GZIP 和 Zip 格式,GZIPInpputStream 和 ZipInputStream 又可將壓縮的數(shù)據(jù)進行還原。

將文件寫入壓縮文件的一般步驟如下:
生成和所要生成的壓縮文件相關聯(lián)的壓縮類對象。
壓縮文件通常不只包含一個文件,將每個要加入的文件稱為一個壓縮入口,使用ZipEntry(String FileName)生成壓縮入口對象。
使用 putNextEntry(ZipEntry entry)將壓縮入口加入壓縮文件。
將文件內容寫入此壓縮文件。
使用 closeEntry()結束目前的壓縮入口,繼續(xù)下一個壓縮入口。

將文件從壓縮文件中讀出的一般步驟如下:
生成和所要讀入的壓縮文件相關聯(lián)的壓縮類對象。
利用 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等),可以將其打開。命令提示符下,程序運行結果如圖所示:

相關文章

  • Java?阻塞隊列BlockingQueue詳解

    Java?阻塞隊列BlockingQueue詳解

    本文詳細介紹了BlockingQueue家庭中的所有成員,包括他們各自的功能以及常見使用場景,通過實例代碼介紹了Java?阻塞隊列BlockingQueue的相關知識,需要的朋友可以參考下
    2022-06-06
  • springcloud?gateway實現(xiàn)簡易版灰度路由步驟詳解

    springcloud?gateway實現(xiàn)簡易版灰度路由步驟詳解

    這篇文章主要為大家介紹了springcloud?gateway實現(xiàn)簡易版灰度路由步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Springboot 在普通類型注入Service或mapper

    Springboot 在普通類型注入Service或mapper

    這篇文章主要介紹了Springboot 在普通類型注入Service或mapper,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Hibernate映射文件id的generator配置方法

    Hibernate映射文件id的generator配置方法

    下面小編就為大家分享一篇Hibernate映射文件id的generator配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 詳解如何開發(fā)一個MyBatis通用Mapper的輪子

    詳解如何開發(fā)一個MyBatis通用Mapper的輪子

    因為一些原因,例如:通用數(shù)據(jù)權限控制、MyBatis-Plus好像不支持聯(lián)合主鍵等,我們不得不開發(fā)一個MyBatis通用Mapper的輪子。文中的示例代碼講解詳細,需要的可以參考一下
    2022-12-12
  • Java實現(xiàn)數(shù)據(jù)連接池Druid舉例

    Java實現(xiàn)數(shù)據(jù)連接池Druid舉例

    本文主要介紹了Java實現(xiàn)數(shù)據(jù)連接池Druid舉例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java練習之潛艇小游戲的實現(xiàn)

    Java練習之潛艇小游戲的實現(xiàn)

    這篇文章主要和大家分享一個Java小練習——利用Java編寫一個潛艇小游戲,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-03-03
  • Java通過動態(tài)代理實現(xiàn)一個簡單的攔截器操作

    Java通過動態(tài)代理實現(xiàn)一個簡單的攔截器操作

    這篇文章主要介紹了Java通過動態(tài)代理實現(xiàn)一個簡單的攔截器操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 詳解Java 反射和反射的應用場景

    詳解Java 反射和反射的應用場景

    這篇文章主要介紹了Java 反射和反射的應用場景的相關資料,幫助大家更好的理解和學習Java反射的相關知識,感興趣的朋友可以了解下
    2020-08-08
  • JavaSwing基礎之Layout布局相關知識詳解

    JavaSwing基礎之Layout布局相關知識詳解

    上次我們說到View的Mearsure流程,今天接著說說layout. 關于layout,很多朋友知道它是負責布局的,那么具體是怎么布局的?viewGroup和view的layout方法又有什么不同?一起來看看吧,需要的朋友可以參考下
    2021-05-05

最新評論