2011-02-27 43 views
0

这里我想压缩文件夹中的.txt文件使用java。如何在使用java的文件夹中仅压缩.txt文件?

我的代码在这里找到与谷歌和完美的作品,但只为一个指定的.txt文件。

谢谢。

import java.util.*; 
import java.util.zip.*; 
import java.io.*; 


public class ZipFile 
    { 
public static void main(String[] args) { 

    ZipOutputStream out = null; 
    InputStream in = null; 
    try { 
     File inputFile1 = new File("c:\\Target\\target.txt");// here i want to say only the directroy where .txt files are stored 
     File outputFile = new File("c:\\Target\\Archive_target.zip");//here i want to put zipped file in a different directory 

     OutputStream rawOut = new BufferedOutputStream(new FileOutputStream(outputFile)); 
     out = new ZipOutputStream(rawOut); 

     InputStream rawIn = new FileInputStream(inputFile1); 
     in = new BufferedInputStream(rawIn); 


     ZipEntry entry = new ZipEntry("c:\\Target\\target.txt"); 
     out.putNextEntry(entry); 
     byte[] buf = new byte[2048]; 
     int len; 
     while ((len = in.read(buf)) > 0) { 
      out.write(buf, 0, len); 
     } 
    } 
    catch(IOException e) { 
     e.printStackTrace(); 
    } 
    finally { 
     try { 
      if(in != null) { 
       in.close(); 
      } 
      if(out != null) { 
       out.close(); 
      } 
     } 
     catch(IOException ignored) 
       { } 
    } 
    } 
} 

回答

1

您需要使用File.list(...)来获取文件夹中所有文本文件的列表。然后创建一个循环来将每个文件写入到zip文件中。

0

您可以通过使用文件类的以下方法得到你的目录中的所有文本文件的列表: 的String []列表(的FilenameFilter过滤器) 创建指向目录的File对象(我知道这听起来不合逻辑的,但就是这样 - 你可以使用isDirectory()来测试它是否是一个目录,然后使用FilenameFilter来说明,例如,如果它的名称包含“.txt”,则接受该文件。

+0

好吧,当我尝试你的小费,我有这样的消息: – user618111 2011-02-27 20:43:38

+0

java.io.FileNotFoundException:C:\目标(访问被拒绝) 是java。 io.FileInputStream.o笔(Native Method) 位于java.io.FileInputStream。 (FileInputStream.java:106) at ZipFile.main(ZipFile.java:37) – user618111 2011-02-27 20:44:21

+0

@ user618111:请在编辑问题时显示您已完成的操作和错误消息。这样可以更容易地帮助你。 (它看起来像目录不可读,或者您正在尝试将目录作为文件读取)。 – 2011-02-27 21:56:40

0

创建一个FilenameFilter只接受* .txt文件,然后只使用

list = File.list(yourNameFilter);

,然后只需在列表中添加的所有文件的zip文件

1

我只是添加这些行只是 后“文件OUTPUTFILE =新的文件(” C:\目标\ Archive_target.zip“); 从我前面的代码

码补充说:

File Dir = new File("c:/Target"); 
      FilenameFilter filter = new FilenameFilter() { 
     public boolean accept(File dir, String name) { 
     return !name.startsWith(".txt"); 
     } 
    }; 
    String[] children = Dir.list(filter);