Java « создать zip архив без сжатия

Создаю zip архив по примеру отсюда

http://java.sun.com/developer/technicalArticles/Programming/compression/

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .java.geshi_code {font-family:monospace;} .java.geshi_code .imp {font-weight: bold; color: red;} .java.geshi_code .kw1 {color: #000000; font-weight: bold;} .java.geshi_code .kw2 {color: #000066; font-weight: bold;} .java.geshi_code .kw3 {color: #003399;} .java.geshi_code .kw4 {color: #000066; font-weight: bold;} .java.geshi_code .co1 {color: #666666; font-style: italic;} .java.geshi_code .co2 {color: #006699;} .java.geshi_code .co3 {color: #008000; font-style: italic; font-weight: bold;} .java.geshi_code .coMULTI {color: #666666; font-style: italic;} .java.geshi_code .es0 {color: #000099; font-weight: bold;} .java.geshi_code .br0 {color: #009900;} .java.geshi_code .sy0 {color: #339933;} .java.geshi_code .st0 {color: #0000ff;} .java.geshi_code .nu0 {color: #cc66cc;} .java.geshi_code .me1 {color: #006633;} .java.geshi_code .me2 {color: #006633;} .java.geshi_code span.xtra { display:block; }

  FileOutputStream dest = new
      FileOutputStream("myfigs.zip");
    ZipOutputStream out = new
      ZipOutputStream(new BufferedOutputStream(dest));

    File f = new File(".");
    String files[] = f.list();
    for (int i=0; i<files.length; i++) {
       System.out.println("Adding: "+files[i]);
       FileInputStream fi = new FileInputStream(files[i]);
       // create zip entry
       // add entries to ZIP file
    }

    ZipEntry entry = new ZipEntry(files[i]))

    out.putNextEntry(entry);
    Write the data to the ZIP file:

    int count;
    while((count = origin.read(data, 0, BUFFER)) != -1) {
       out.write(data, 0, count);
    }


    origin.close();
    out.close();
 


Как можно указать чтобы небыло сжатия? или по умолчанию сжатие не производится?

Нужно потому что пишу в архив картинки, а они уже сжаты

1 ответов


После конструктора вставить:
out.setLevel(0);
Подробнее тут.
Хотя, если они сами по себе сжаты, deflate и так использоваться не будет, т.к. не хватает избыточности. Всё равно что попытаться сжать дамп /dev/random.


Немного не в тему но прочитайте про формат tar он складывает несколько файлов в 1 без сжатия. Немного лучше соответствует задаче, хотя могут помешать какие то ограничения про которые я не знаю, так что если что не ругайтесь=) http://code.google.com/p/jtar/ -неплохая реализация на java