最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

需要注意的是,mode 表示所創(chuàng)建的隨機(jī)讀寫文件的操作狀態(tài),其取值包括:
r:表示以只讀方式打開文件。
rw:表示以讀寫方式打開文件,使用該模式只用一個(gè)對象即可同時(shí)實(shí)現(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()); //移動到文件結(jié)尾
      myFile.writeBytes(s+"\n"); //寫入數(shù)據(jù)
      myFile.close();
    }
    catch(IOException e){}
  }
}

程序運(yùn)行后在目錄中建立一個(gè) ep10_12.log 的文件,每次運(yùn)行時(shí)輸入的內(nèi)容都會在該文件內(nèi)容的結(jié)尾處添加。

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

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

將文件從壓縮文件中讀出的一般步驟如下:
生成和所要讀入的壓縮文件相關(guān)聯(lián)的壓縮類對象。
利用 getNextEntry()得到下一個(gè)壓縮入口。

【例】輸入若干文件名,將所有文件壓縮為“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++){ //對命令行輸入的每個(gè)文件進(jìn)行處理
      System.out.println("Writing file"+args[i]);
      BufferedInputStream in=new BufferedInputStream(new FileInputStream(args[i]));
      out.putNextEntry(new ZipEntry(args[i])); //設(shè)置 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();
  }
}

運(yùn)行后,在程序目錄建立一個(gè) ep10_13.zip 的壓縮文件,使用解壓縮軟件(如 WinRAR等),可以將其打開。命令提示符下,程序運(yùn)行結(jié)果如圖所示:

相關(guān)文章

  • springboot 獲取訪問接口的請求的IP地址的實(shí)現(xiàn)

    springboot 獲取訪問接口的請求的IP地址的實(shí)現(xiàn)

    本文主要介紹了springboot獲取訪問接口的請求的IP地址的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 詳解Java的內(nèi)存模型

    詳解Java的內(nèi)存模型

    本文更準(zhǔn)確的說法應(yīng)該是JVM的內(nèi)存模型,但是這里又牽扯了一些其他的前置知識,主要是想從Java入手,從源頭上梳理一遍整個(gè)Java底層運(yùn)行的機(jī)制,中間會額外補(bǔ)充一些和題目無關(guān)的前置基礎(chǔ),導(dǎo)致主講內(nèi)存模型的篇幅所占的比例就不是那么絕對。
    2021-06-06
  • struts2中使用注解配置Action方法詳解

    struts2中使用注解配置Action方法詳解

    這篇文章主要介紹了struts2中使用注解配置Action方法詳解,涉及一個(gè)示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • 關(guān)于Java兩個(gè)浮點(diǎn)型數(shù)字加減乘除的問題

    關(guān)于Java兩個(gè)浮點(diǎn)型數(shù)字加減乘除的問題

    由于浮點(diǎn)數(shù)在計(jì)算機(jī)中是以二進(jìn)制表示的,直接進(jìn)行加減乘除運(yùn)算會出現(xiàn)精度誤差,想要得到精確結(jié)果,應(yīng)使用BigDecimal類進(jìn)行運(yùn)算
    2024-10-10
  • Spring?MVC數(shù)據(jù)響應(yīng)處理詳解

    Spring?MVC數(shù)據(jù)響應(yīng)處理詳解

    這篇文章主要給大家介紹了關(guān)于Spring?MVC數(shù)據(jù)響應(yīng)處理的相關(guān)資料,本教程詳細(xì)的講解SpringMVC框架的使用,非常詳細(xì)的案例講解,一步一步帶你走入springmvc框架的核心,需要的朋友可以參考下
    2022-05-05
  • Spring中SmartLifecycle和Lifecycle的作用和區(qū)別

    Spring中SmartLifecycle和Lifecycle的作用和區(qū)別

    這篇文章主要介紹了Spring中SmartLifecycle和Lifecycle的作用和區(qū)別,本文通過實(shí)例代碼給大家介紹的非常詳細(xì)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • intellij idea的快速配置使用詳細(xì)教程

    intellij idea的快速配置使用詳細(xì)教程

    這篇文章主要介紹了intellij idea的快速配置使用詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 可視化定時(shí)任務(wù)quartz集成解析全過程

    可視化定時(shí)任務(wù)quartz集成解析全過程

    在開發(fā)中有很多定時(shí)任務(wù)都不是寫死的而是可以人為配置并且寫到數(shù)據(jù)庫中的,下面這篇文章主要給大家介紹了關(guān)于可視化定時(shí)任務(wù)quartz集成解析的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • java顯示聲音波形圖示例

    java顯示聲音波形圖示例

    這篇文章主要介紹了java顯示聲音波形圖示例,需要的朋友可以參考下
    2014-05-05
  • 基于springcloud異步線程池、高并發(fā)請求feign的解決方案

    基于springcloud異步線程池、高并發(fā)請求feign的解決方案

    這篇文章主要介紹了基于springcloud異步線程池、高并發(fā)請求feign的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論

博野县| 阿鲁科尔沁旗| 衡东县| 中方县| 双辽市| 光山县| 台南市| 伊宁县| 伊通| 桂林市| 赤峰市| 肇州县| 汝阳县| 汉源县| 修文县| 贵港市| 苏尼特右旗| 阳春市| 庄浪县| 濉溪县| 嘉荫县| 垣曲县| 嘉禾县| 桐乡市| 汝阳县| 华阴市| 余干县| 新建县| 栾城县| 珠海市| 博罗县| 通化市| 扎赉特旗| 望江县| 改则县| 蓝山县| 镇巴县| 潜江市| 江陵县| 文登市| 抚宁县|