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

如何使用java仅压缩文件夹中的.txt文件?,java,file-io,zip,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; InputSt

在这里,我尝试使用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)
                { }
    }
    }
}

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

您可以使用file类的以下方法获取目录中所有文本文件的列表: 字符串[]列表(FilenameFilter筛选器)
创建一个指向您的目录的文件对象(我知道这听起来不合逻辑,但事实就是这样-您可以使用isDirectory()测试它是否是一个目录),然后使用FilenameFilter来表示,例如,如果文件名包含“.txt”

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

list=File.list(yourNameFilter)


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

我只需在后面添加这些行 “File outputFile=新文件(“c:\Target\Archive\u 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);

好的,当我尝试你的技巧时,我有一条消息,比如:java.io.FileNotFoundException:c:\Target(拒绝访问)在java.io.FileInputStream.open(本机方法)在java.io.FileInputStream。(FileInputStream.java:106)在ZipFile.main(ZipFile.java:37)@user618111:请在编辑问题时显示您所做的操作以及错误消息。这样可以更容易地帮助您。(看起来目录不可读,或者您正在尝试将目录作为文件读取)。