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

java實(shí)現(xiàn)文件讀寫與壓縮實(shí)例

 更新時(shí)間:2014年07月23日 16:16:04   投稿:shichen2014  
這篇文章主要介紹了java實(shí)現(xiàn)文件讀寫與壓縮實(shí)例,有助于讀者加深對(duì)文件操作的理解,需要的朋友可以參考下

本文通過實(shí)例講述了Java對(duì)文件讀寫與壓縮的實(shí)現(xiàn)方法,具體代碼如下:

package com.toone.iform.action.common;

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.Enumeration; 
import java.util.Random; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipException; 
import java.util.zip.ZipFile;
public class TestFileIO {
  static String s = File.separator;
 
  private static void testInput() {
    // D盤下有個(gè)Welcome.java文件,現(xiàn)在按字節(jié)讀入:     
   int a = 0;
    // int counter=0;     
   FileInputStream f11;
    // 輸入流     
   try {
      f11 = new FileInputStream("D:" + s + "Welcome.java");
      while ((a = f11.read()) != -1)
        System.out.print((char) a); // 這里是按字節(jié)輸出,中文字符無(wú)法正常輸出,因?yàn)橐粋€(gè)中文字符時(shí)兩個(gè)字節(jié)。       
       System.out.println("\n\n--------------------------------------------------\n");
 
      FileReader f12 = new FileReader("D:" + s + "Welcome.java");
      while ((a = f12.read()) != -1)
        System.out.print((char) a);// 這里是按字符輸出,中文字符都可以正常輸出      
       System.out.println("\n\n--------------------------------------------------\n");
 
      f11.close();// 讀完之后要關(guān)閉文件      
      f12.close();// 讀完之后要關(guān)閉文件    
      } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block       
       e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block      
     e.printStackTrace();
    }
  }
 
  private static void testOutput() {
    // D盤下有個(gè)Welcome.java文件,現(xiàn)在按字節(jié)讀入:    
   int a = 0;
    // 輸出流     
   File f21 = new File("D:" + s + "testFile" + s + "test1.txt");
   // 定義一個(gè)新的文件f21,然后判斷在這一目錄下是否存在,如果不存在,則創(chuàng)建之。    
   if (!f21.exists()) {
      f21.getParentFile().mkdirs();
      try {
        f21.createNewFile();
        // 將“Welcome.java”的內(nèi)容復(fù)制到f21         
        FileOutputStream fos = new FileOutputStream(f21);
        FileInputStream fis = new FileInputStream("D:" + s + "Welcome.java");// 讀入“Welcome.java”文件         
        while ((a = fis.read()) != -1)
          fos.write(a);// 將讀入的內(nèi)存寫到fos中,現(xiàn)在得到的test1.txt就是復(fù)制Welcome.java的
        // writer類        
        FileWriter f22 = new FileWriter("D:" + s + "testFile" + s + "test2.txt");
        for (int i = 0; i < 65535; i++)
          f22.write(i);//寫入到test2.txt中。由這里也可以看出,上面35-38行判斷文件是否存在的語(yǔ)句也可以不要。         
        // 向文件中寫入字符串         
        FileWriter f23 = new FileWriter("D:" + s + "testFile" + s + "test3.txt");
        f23.write("Hello, world!");
 
        fos.close();
        fis.close();
        f22.close();
        f23.close();
      } catch (IOException e) {
        // TODO Auto-generated catch block
         e.printStackTrace();
      }
    }
  }
 
  private static void testBufferring() {
    // D盤下有個(gè)Welcome.java文件,現(xiàn)在按字節(jié)讀入:     
   int a = 0, counter = 0;
    // 緩沖字符,實(shí)現(xiàn)高效寫入     
   // BufferedWriter f31=new BufferedWriter(newFileWriter("D"+s+"testFile"+s+"test4.txt"));    
   BufferedWriter f31;
    try {
      f31 = new BufferedWriter(new FileWriter("D:" + s + "testFile" + s
          + "test4.txt"));
      for (int i = 1; i <= 100; i++) {
        f31.write(String.valueOf(new Random().nextInt(100)) + " ");
        if (i % 10 == 0)
          f31.newLine();
      }
      f31.flush();// 刷新緩沖      
      f31.close();
 
      BufferedReader f32 = new BufferedReader(new FileReader("D:" + s
          + "testFile" + s + "test4.txt"));
      String s32;
      System.out.println("輸出文件f32的內(nèi)容:");
      while ((s32 = f32.readLine()) != null)
        System.out.println(s32);
      f32.close();
      System.out.println("\n--------------------------------------------------\n");
    } catch (IOException e) {
      // TODO Auto-generated catch block       
     e.printStackTrace();
    }
  }
 
  private static void testZip() {
    try {
      File f1 = new File("D:/test.zip");
      File f2 = new File("D:/testFile/testzip");
      ZipFile zf = new ZipFile(f1);
      testZipToUnzip(zf, f2);
 
    } catch (IOException e) {
      // TODO Auto-generated catch block
       e.printStackTrace();
    }
  }
 
  // 將壓縮包zipfile解壓到file中  
  public static void testZipToUnzip(ZipFile zipfile, File file) {
    ZipEntry zentry = null;
    File zipout;
    InputStream zis = null;
    FileOutputStream fos = null;
    Enumeration e = zipfile.entries();// zipfile的目錄
    while (e.hasMoreElements()) {
      zentry = (ZipEntry) e.nextElement();
      System.out.println(zentry.getName());// zipfile下有哪些文件?可是為什么不按順序輸出??
      // 將解壓后的文件放到file文件夾下:      
      zipout = new File(file + s + zentry.getName());
 
      if (!zentry.isDirectory()) {
        try {
          zis = zipfile.getInputStream(zentry);
          if (!zipout.exists())
            zipout.getParentFile().mkdirs();
          fos = new FileOutputStream(zipout);
          byte[] b = new byte[1024];
          int length;
          while ((length = zis.read(b)) > 0) {
            fos.write(b, 0, length);
          }
          fos.close();
          zis.close();
        } catch (ZipException e1) {
          // TODO Auto-generated catch block           
         e1.printStackTrace();
        } catch (IOException e1) {
          // TODO Auto-generated catch block          
         e1.printStackTrace();
        }
      }
    }
  }
 
  public static void main(String[] args) throws ZipException {
    // TODO Auto-generated method stub
    testInput();
    testOutput();
    testBufferring();
    testZip();
  }
}

相關(guān)文章

  • Java打包ZIP文件的使用

    Java打包ZIP文件的使用

    本文詳細(xì)介紹了如何使用Java語(yǔ)言進(jìn)行ZIP文件的創(chuàng)建、讀取和操作,通過java.util.zip包和第三方庫(kù),可以高效地處理ZIP文件,并應(yīng)用密碼保護(hù)和注釋等高級(jí)功能,在實(shí)際應(yīng)用中,遵循最佳實(shí)踐可以提高程序的健壯性和安全性
    2025-02-02
  • Java?OkHttp框架源碼超詳細(xì)解析

    Java?OkHttp框架源碼超詳細(xì)解析

    okhttp是一個(gè)第三方類庫(kù),用于android中請(qǐng)求網(wǎng)絡(luò)。這是一個(gè)開源項(xiàng)目,是安卓端最火熱的輕量級(jí)框架,由移動(dòng)支付Square公司貢獻(xiàn)(該公司還貢獻(xiàn)了Picasso和LeakCanary)?。用于替代HttpUrlConnection和Apache?HttpClient
    2022-11-11
  • 解析iReport自定義行數(shù)分頁(yè)的操作方法

    解析iReport自定義行數(shù)分頁(yè)的操作方法

    ireport默認(rèn)都是自動(dòng)分頁(yè)數(shù)據(jù)超出頁(yè)面長(zhǎng)度就會(huì)自動(dòng)分到下一頁(yè),但有時(shí)候業(yè)務(wù)需要一頁(yè)只顯示固定幾行這時(shí)候就需要自定義條數(shù)了。下面看具體操作吧
    2021-10-10
  • java開發(fā)RocketMQ消息中間件原理基礎(chǔ)詳解

    java開發(fā)RocketMQ消息中間件原理基礎(chǔ)詳解

    最近 RocketMQ 剛剛上生產(chǎn)環(huán)境,閑暇之時(shí)在這里做一些分享,主要目的是讓初學(xué)者能快速上手RocketMQ,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 電腦上安裝多個(gè)JDK版本時(shí)該如何自由切換(詳細(xì)圖文)

    電腦上安裝多個(gè)JDK版本時(shí)該如何自由切換(詳細(xì)圖文)

    我們?cè)趯W(xué)習(xí)的過程中經(jīng)常用到不同的jdk版本,那么如何在一臺(tái)電腦上同時(shí)安裝多個(gè)jdk版本并進(jìn)行切換呢,這篇文章主要給大家介紹了關(guān)于電腦上安裝多個(gè)JDK版本時(shí)該如何自由切換的相關(guān)資料,需要的朋友可以參考下
    2023-10-10
  • 一文秒懂Java enum常見的用法講解

    一文秒懂Java enum常見的用法講解

    這篇文章主要介紹了一文秒懂Java enum常見的用法講解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java 數(shù)組轉(zhuǎn)List的四種方式小結(jié)

    Java 數(shù)組轉(zhuǎn)List的四種方式小結(jié)

    本文主要介紹了四種將Java數(shù)組轉(zhuǎn)換為L(zhǎng)ist的方法,包括使用Arrays.asList、ArrayList構(gòu)造器、Collections.addAll以及JDK8的Stream,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-10-10
  • SpringBoot3.0整合chatGPT的完整步驟

    SpringBoot3.0整合chatGPT的完整步驟

    ChatGPT是OpenAI推出的一個(gè)語(yǔ)言模型系統(tǒng),它能夠?qū)崟r(shí)回答用戶提問,包括聊天、糾正語(yǔ)法錯(cuò)誤,甚至是寫代碼、寫劇本等,由于可玩性很高,迅速在全球范圍內(nèi)風(fēng)靡起來(lái),下面這篇文章主要給大家介紹了關(guān)于SpringBoot3.0整合chatGPT的完整步驟,需要的朋友可以參考下
    2022-12-12
  • Springboot項(xiàng)目與vue項(xiàng)目整合打包的實(shí)現(xiàn)方式

    Springboot項(xiàng)目與vue項(xiàng)目整合打包的實(shí)現(xiàn)方式

    這篇文章主要介紹了Springboot項(xiàng)目與vue項(xiàng)目整合打包的實(shí)現(xiàn)方式,本文通過兩種方式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Java使用cxf發(fā)布及調(diào)用webservice接口的方法詳解

    Java使用cxf發(fā)布及調(diào)用webservice接口的方法詳解

    今天小編就為大家分享一篇關(guān)于Java使用CXF發(fā)布及調(diào)用WebService接口的方法,文中通過代碼示例給大家介紹的非常詳細(xì),具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2023-08-08

最新評(píng)論

台安县| 资讯 | 黔南| 峡江县| 富宁县| 临城县| 女性| 洛浦县| 通海县| 安塞县| 油尖旺区| 育儿| 南木林县| 太原市| 南部县| 大余县| 太谷县| 永胜县| 平南县| 锡林浩特市| 周至县| 丰城市| 千阳县| 常宁市| 民乐县| 巴彦县| 临夏市| 五常市| 灵山县| 武山县| 石城县| 久治县| 宣化县| 栖霞市| 合水县| 沧州市| 乌兰浩特市| 古蔺县| 泽库县| 承德市| 桦甸市|