服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - JAVA教程 - java实现文件读写与压缩实例

java实现文件读写与压缩实例

2019-11-24 15:38shichen2014 JAVA教程

这篇文章主要介绍了java实现文件读写与压缩实例,有助于读者加深对文件操作的理解,需要的朋友可以参考下

本文通过实例讲述了Java对文件读写与压缩的实现方法,具体代码如下:

  1. package com.toone.iform.action.common; 
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.BufferedWriter;  
  5. import java.io.File;  
  6. import java.io.FileInputStream;  
  7. import java.io.FileNotFoundException;  
  8. import java.io.FileOutputStream;  
  9. import java.io.FileReader;  
  10. import java.io.FileWriter;  
  11. import java.io.IOException;  
  12. import java.io.InputStream;  
  13. import java.util.Enumeration;  
  14. import java.util.Random;  
  15. import java.util.zip.ZipEntry;  
  16. import java.util.zip.ZipException;  
  17. import java.util.zip.ZipFile; 
  18. public class TestFileIO { 
  19.   static String s = File.separator; 
  20.    
  21.   private static void testInput() { 
  22.     // D盘下有个Welcome.java文件,现在按字节读入:      
  23.    int a = 0; 
  24.     // int counter=0;      
  25.    FileInputStream f11; 
  26.     // 输入流      
  27.    try { 
  28.       f11 = new FileInputStream("D:" + s + "Welcome.java"); 
  29.       while ((a = f11.read()) != -1) 
  30.         System.out.print((char) a); // 这里是按字节输出,中文字符无法正常输出,因为一个中文字符时两个字节。        
  31.        System.out.println("\n\n--------------------------------------------------\n"); 
  32.    
  33.       FileReader f12 = new FileReader("D:" + s + "Welcome.java"); 
  34.       while ((a = f12.read()) != -1) 
  35.         System.out.print((char) a);// 这里是按字符输出,中文字符都可以正常输出       
  36.        System.out.println("\n\n--------------------------------------------------\n"); 
  37.    
  38.       f11.close();// 读完之后要关闭文件       
  39.       f12.close();// 读完之后要关闭文件     
  40.       } catch (FileNotFoundException e) { 
  41.       // TODO Auto-generated catch block        
  42.        e.printStackTrace(); 
  43.     } catch (IOException e) { 
  44.       // TODO Auto-generated catch block       
  45.      e.printStackTrace(); 
  46.     } 
  47.   } 
  48.    
  49.   private static void testOutput() { 
  50.     // D盘下有个Welcome.java文件,现在按字节读入:     
  51.    int a = 0; 
  52.     // 输出流      
  53.    File f21 = new File("D:" + s + "testFile" + s + "test1.txt"); 
  54.    // 定义一个新的文件f21,然后判断在这一目录下是否存在,如果不存在,则创建之。     
  55.    if (!f21.exists()) { 
  56.       f21.getParentFile().mkdirs(); 
  57.       try { 
  58.         f21.createNewFile(); 
  59.         // 将“Welcome.java”的内容复制到f21          
  60.         FileOutputStream fos = new FileOutputStream(f21); 
  61.         FileInputStream fis = new FileInputStream("D:" + s + "Welcome.java");// 读入“Welcome.java”文件          
  62.         while ((a = fis.read()) != -1) 
  63.           fos.write(a);// 将读入的内存写到fos中,现在得到的test1.txt就是复制Welcome.java的 
  64.         // writer类         
  65.         FileWriter f22 = new FileWriter("D:" + s + "testFile" + s + "test2.txt"); 
  66.         for (int i = 0; i < 65535; i++) 
  67.           f22.write(i);//写入到test2.txt中。由这里也可以看出,上面35-38行判断文件是否存在的语句也可以不要。          
  68.         // 向文件中写入字符串          
  69.         FileWriter f23 = new FileWriter("D:" + s + "testFile" + s + "test3.txt"); 
  70.         f23.write("Hello, world!"); 
  71.    
  72.         fos.close(); 
  73.         fis.close(); 
  74.         f22.close(); 
  75.         f23.close(); 
  76.       } catch (IOException e) { 
  77.         // TODO Auto-generated catch block 
  78.          e.printStackTrace(); 
  79.       } 
  80.     } 
  81.   } 
  82.    
  83.   private static void testBufferring() { 
  84.     // D盘下有个Welcome.java文件,现在按字节读入:      
  85.    int a = 0, counter = 0; 
  86.     // 缓冲字符,实现高效写入      
  87.    // BufferedWriter f31=new BufferedWriter(newFileWriter("D"+s+"testFile"+s+"test4.txt"));     
  88.    BufferedWriter f31; 
  89.     try { 
  90.       f31 = new BufferedWriter(new FileWriter("D:" + s + "testFile" + s 
  91.           + "test4.txt")); 
  92.       for (int i = 1; i <= 100; i++) { 
  93.         f31.write(String.valueOf(new Random().nextInt(100)) + " "); 
  94.         if (i % 10 == 0) 
  95.           f31.newLine(); 
  96.       } 
  97.       f31.flush();// 刷新缓冲       
  98.       f31.close(); 
  99.    
  100.       BufferedReader f32 = new BufferedReader(new FileReader("D:" + s 
  101.           + "testFile" + s + "test4.txt")); 
  102.       String s32; 
  103.       System.out.println("输出文件f32的内容:"); 
  104.       while ((s32 = f32.readLine()) != null
  105.         System.out.println(s32); 
  106.       f32.close(); 
  107.       System.out.println("\n--------------------------------------------------\n"); 
  108.     } catch (IOException e) { 
  109.       // TODO Auto-generated catch block        
  110.      e.printStackTrace(); 
  111.     } 
  112.   } 
  113.    
  114.   private static void testZip() { 
  115.     try { 
  116.       File f1 = new File("D:/test.zip"); 
  117.       File f2 = new File("D:/testFile/testzip"); 
  118.       ZipFile zf = new ZipFile(f1); 
  119.       testZipToUnzip(zf, f2); 
  120.    
  121.     } catch (IOException e) { 
  122.       // TODO Auto-generated catch block 
  123.        e.printStackTrace(); 
  124.     } 
  125.   } 
  126.    
  127.   // 将压缩包zipfile解压到file中   
  128.   public static void testZipToUnzip(ZipFile zipfile, File file) { 
  129.     ZipEntry zentry = null
  130.     File zipout; 
  131.     InputStream zis = null
  132.     FileOutputStream fos = null
  133.     Enumeration e = zipfile.entries();// zipfile的目录 
  134.     while (e.hasMoreElements()) { 
  135.       zentry = (ZipEntry) e.nextElement(); 
  136.       System.out.println(zentry.getName());// zipfile下有哪些文件?可是为什么不按顺序输出?? 
  137.       // 将解压后的文件放到file文件夹下:       
  138.       zipout = new File(file + s + zentry.getName()); 
  139.    
  140.       if (!zentry.isDirectory()) { 
  141.         try { 
  142.           zis = zipfile.getInputStream(zentry); 
  143.           if (!zipout.exists()) 
  144.             zipout.getParentFile().mkdirs(); 
  145.           fos = new FileOutputStream(zipout); 
  146.           byte[] b = new byte[1024]; 
  147.           int length; 
  148.           while ((length = zis.read(b)) > 0) { 
  149.             fos.write(b, 0, length); 
  150.           } 
  151.           fos.close(); 
  152.           zis.close(); 
  153.         } catch (ZipException e1) { 
  154.           // TODO Auto-generated catch block            
  155.          e1.printStackTrace(); 
  156.         } catch (IOException e1) { 
  157.           // TODO Auto-generated catch block           
  158.          e1.printStackTrace(); 
  159.         } 
  160.       } 
  161.     } 
  162.   } 
  163.    
  164.   public static void main(String[] args) throws ZipException { 
  165.     // TODO Auto-generated method stub 
  166.     testInput(); 
  167.     testOutput(); 
  168.     testBufferring(); 
  169.     testZip(); 
  170.   } 

延伸 · 阅读

精彩推荐