如何使用java在文件夹中仅压缩.txt文件?

时间:2011-02-27 16:42:52

标签: java file-io zip

这里我试图仅使用java压缩文件夹中的.txt文件。

此处的代码是在Google上找到的,效果很好但仅适用于指定的.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)
                { }
    }
    }
}

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我刚刚添加这些行 “文件outputFile = new File(”c:\ Target \ 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);

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

list = File.list(yourNameFilter);

然后只需将列表中的所有文件添加到zip文件