这里我试图仅使用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)
{ }
}
}
}
答案 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文件