亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java實現文件讀寫與壓縮實例

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

本文通過實例講述了Java對文件讀寫與壓縮的實現方法,具體代碼如下:

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盤下有個Welcome.java文件,現在按字節(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é)輸出,中文字符無法正常輸出,因為一個中文字符時兩個字節(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();// 讀完之后要關閉文件      
      f12.close();// 讀完之后要關閉文件    
      } 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盤下有個Welcome.java文件,現在按字節(jié)讀入:    
   int a = 0;
    // 輸出流     
   File f21 = new File("D:" + s + "testFile" + s + "test1.txt");
   // 定義一個新的文件f21,然后判斷在這一目錄下是否存在,如果不存在,則創(chuàng)建之。    
   if (!f21.exists()) {
      f21.getParentFile().mkdirs();
      try {
        f21.createNewFile();
        // 將“Welcome.java”的內容復制到f21         
        FileOutputStream fos = new FileOutputStream(f21);
        FileInputStream fis = new FileInputStream("D:" + s + "Welcome.java");// 讀入“Welcome.java”文件         
        while ((a = fis.read()) != -1)
          fos.write(a);// 將讀入的內存寫到fos中,現在得到的test1.txt就是復制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行判斷文件是否存在的語句也可以不要。         
        // 向文件中寫入字符串         
        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盤下有個Welcome.java文件,現在按字節(jié)讀入:     
   int a = 0, counter = 0;
    // 緩沖字符,實現高效寫入     
   // 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的內容:");
      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();
  }
}

相關文章

  • maven pom中內置變量及引用的實現

    maven pom中內置變量及引用的實現

    maven其實有很多內置變量供開發(fā)著在開發(fā)中使用,本文主要介紹了maven pom中內置變量及引用的實現,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • java如何將一個float型數的整數部分和小數分別輸出顯示

    java如何將一個float型數的整數部分和小數分別輸出顯示

    這篇文章主要介紹了java如何將一個float型數的整數部分和小數分別輸出顯示,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Apache DolphinScheduler完全設置東八區(qū)時區(qū)

    Apache DolphinScheduler完全設置東八區(qū)時區(qū)

    這篇文章主要為大家介紹了Apache DolphinScheduler完全設置東八區(qū)配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • MyBatis緩存功能原理及實例解析

    MyBatis緩存功能原理及實例解析

    這篇文章主要介紹了MyBatis緩存功能原理及實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Spring Data JPA使用JPQL與原生SQL進行查詢的操作

    Spring Data JPA使用JPQL與原生SQL進行查詢的操作

    這篇文章主要介紹了Spring Data JPA使用JPQL與原生SQL進行查詢的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中為什么不同的返回類型不算方法重載

    Java中為什么不同的返回類型不算方法重載

    這篇文章主要介紹了Java中為什么不同的返回類型不算方法重載,方法重載是指在同一個類中,定義了多個同名方法,但每個方法的參數類型或者是參數個數不同就是方法重載,下文詳細介紹,需要的小伙伴可以參考一下
    2022-05-05
  • java中redis增刪查以及清理緩存的案例

    java中redis增刪查以及清理緩存的案例

    這篇文章主要介紹了java中redis增刪查以及清理緩存的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • centos7如何通過systemctl啟動springboot服務代替java -jar方式啟動

    centos7如何通過systemctl啟動springboot服務代替java -jar方式啟動

    這篇文章主要介紹了centos7如何通過systemctl啟動springboot服務代替java -jar方式啟動,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • Java二叉樹的遍歷思想及核心代碼實現

    Java二叉樹的遍歷思想及核心代碼實現

    今天小編就為大家分享一篇關于Java二叉樹的遍歷思想及核心代碼實現,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java使用wait和notify實現線程之間的通信

    Java使用wait和notify實現線程之間的通信

    Java 線程通信是將多個獨立的線程個體進行關聯處理,使得線程與線程之間能進行相互通信,下面這篇文章主要給大家介紹了關于Java使用wait和notify實現線程之間通信的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04

最新評論