Как архивировать папку WordprocessingML в читаемый docx

Вам нужен Java HashSet.

описание от официальная документация :

Этот класс реализует интерфейс Set, поддержанный хэш-таблицей (на самом деле экземпляр HashMap). Это не делает гарантий относительно итеративного порядка набора; в частности, это не гарантирует, что порядок будет оставаться постоянным со временем. Этот класс разрешает пустой элемент.

Этот класс предлагает постоянную производительность времени для основных операций (добавьте, удалите, содержит и размер), предполагая, что хеш-функция рассеивает элементы правильно среди блоков. Итерация по этому набору требует времени, пропорционального сумме размера экземпляра HashSet (число элементов) плюс "способность" отступающего экземпляра HashMap (количество блоков). Таким образом очень важно не установить начальную способность слишком высоко (или коэффициент загрузки слишком низко), если итеративное выполнение важно.

Примечание, что эта реализация не синхронизируется. Если несколько потоков получают доступ к набору хеша одновременно, и по крайней мере один из потоков изменяет набор, он должен синхронизироваться внешне. Это обычно выполняется путем синхронизации на некотором объекте, который естественно инкапсулирует набор. Если никакой такой объект не существует, набор должен быть "обернут" с помощью метода Collections.synchronizedSet. Это лучше всего сделано во время создания, для предотвращения случайного несинхронизируемого доступа к набору:

Набор s = Collections.synchronizedSet (новый HashSet (...));

итераторы, возвращенные методом итератора этого класса, являются сбоем быстро: если набор изменяется когда-либо после того, как итератор создается, всегда кроме через собственный итератор удаляют метод, Итератор бросает ConcurrentModificationException. Таким образом, перед лицом параллельной модификации, итератор перестал работать быстро и чисто, вместо того, чтобы рискнуть произвольным, недетерминированным поведением в неопределенное время в будущем.

Примечание, которое не может быть гарантировано поведение сбоя быстро итератора, как, вообще говоря, невозможно сделать любые трудные гарантии в присутствии несинхронизируемой параллельной модификации. Итераторы сбоя быстро бросают ConcurrentModificationException на основе максимальных усилий. Поэтому было бы неправильно записать программу, которая зависела от этого исключения для его правильности: поведение сбоя быстро итераторов должно использоваться только для обнаружения ошибок.

Этот класс является членом Платформы Наборов Java.

33
задан Camille G. 13 February 2014 в 14:38
поделиться

2 ответа

Используемый алгоритм сжатия - "Zip" (Base 64 ) сжатие.

7zip, кажется, предлагает это, хотя я не тестировал его.

1
ответ дан 27 November 2019 в 18:06
поделиться

В соответствии с тем, что сказал Мика, содержимое ZIP-файла организовано в соответствии с Конвенцией об открытой упаковке; ср. Основы Microsoft Open Packaging Convention .

Вы можете использовать .NET System.IO.Packaging для создания и управления файлами .docx; этот класс реализован в проекте Mono.

3
ответ дан 27 November 2019 в 18:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: