Как заархивировать только .txt файл в папку, используя Java? - PullRequest
0 голосов
/ 27 февраля 2011

здесь я пытаюсь сжать только .txt файл в папке с использованием Java.

Мой код был найден в 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 ]

1 голос
/ 28 февраля 2011

Я просто добавляю эти строки сразу после "Файл outputFile = новый файл (" 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);
1 голос
/ 27 февраля 2011

Вам необходимо использовать File.list (...), чтобы получить список всех текстовых файлов в папке. Затем вы создаете цикл для записи каждого файла в zip-файл.

0 голосов
/ 27 февраля 2011

Создайте FilenameFilter, который принимает только * .txt файл, а затем просто используйте

list = File.list (yourNameFilter);

, а затем просто добавьте все файлы в списке впочтовый файл

0 голосов
/ 27 февраля 2011

Вы можете получить список всех текстовых файлов в вашем каталоге, используя следующий метод класса File: Список строк [] (фильтр FilenameFilter) Создайте объект File, который указывает на вашу DIRECTORY (я знаю, это звучит нелогично, но так оно и есть - вы можете проверить, является ли он каталогом, используя isDirectory ()), а затем использовать FilenameFilter, чтобы сказать, например, принять этот файл. если его имя содержит ".txt"

...