Ненавижу генерировать исключение для вещей, которые я могу просто проверить с помощью оператора if. Я знаю, что zip/jar с нулевой длиной вызовет исключение, если вы попытаетесь получить к нему доступ, используя API java.util.zip/java.util.jar. Таким образом, кажется, что должен быть самый маленький файл, с которым могут работать эти API-интерфейсы.Что такое самый маленький, юридический файл zip/jar?
ответ
Согласно ZIP формата файл specs почтового файл должны по крайней мере иметь центральную структуру каталогов, которая составляет 46 байт длины +-переменных полей (проверить спецификацию самостоятельно).
Возможно, мы должны принять по крайней мере 1 запись, которая подразумевает заголовок файла для этой записи.
Вы действительно должны поставить этот код в try/catch, поскольку есть много вещей, которые могут пойти не так, когда вы читаете/записываете файлы?
Если вы действительно должны знать ответ на этот вопрос, попробуйте добавить 1-байтовый файл в zip-файл, а затем посмотреть, не получилось ли это? Легкий код проходит через диапазон размеров от 1 до 65536 байт и добавляет в zip-файл и видит, какие из них терпят неудачу?
Код находится в блоке try/catch. Я не люблю писать код, который использует исключения, чтобы поймать условие, которое можно тестировать. – vkraemer
Ваш код должен быть действительно дерьмовым, если вы считаете, что проверка размера zip - это enuff, и ничто другое не может быть неправильным. Пусть zip-классы выполняют свою задачу и позволяют им жаловаться через исключение. –
Jar файлы должны иметь хотя бы одну запись. Если вы хотите сделать пустой, сделайте манифест только банкой.
См. http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#JAR Манифест для получения дополнительной информации о манифестовых банках.
Итак, кажется, что самый маленький юридический zip-файл будет меньше, чем самая маленькая юридическая банка? – vkraemer
Самый маленький юридический почтовый индекс содержит нулевые записи и один «пустой» центральный каталог.
байты:
80 75 05 06
следуют 18 байт ноль (0).
Итак, длина 22 байт.
VBscript создать его:
Sub NewZip(pathToZipFile)
WScript.Echo "Newing up a zip file (" & pathToZipFile & ") "
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim file
Set file = fso.CreateTextFile(pathToZipFile)
file.Write Chr(80) & Chr(75) & Chr(5) & Chr(6) & String(18, 0)
file.Close
Set fso = Nothing
Set file = Nothing
WScript.Sleep 500
End Sub
NewZip "Empty.zip"
Это может работать для zip-программы, но, похоже, это неприемлемо для java.util.zip. * Apis. – vkraemer
Я написал быстрый тест и наименьшую молнию, что я мог бы создать и затем считаны с API, java.util.zip был 118 байт. Возможно, существует способ создания меньшего zip-файла, который соответствует спецификации и читается с помощью утилиты zip ...
final static byte[] EmptyZip={80,75,05,06,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00};
public static void createEmptyZip(String path){
try{
FileOutputStream fos=new FileOutputStream(new File(path));
fos.write(EmptyZip, 0, 22);
fos.flush();
fos.close();
}catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
- 1. Что самый маленький способ сказать:
- 2. Что такое самый маленький тип звука для AVAudioRecorder
- 3. Самый маленький исполняемый файл для Windows
- 4. ECLIPSE: Как экспортировать самый маленький файл jar
- 5. Самый маленький и второй самый маленький в массиве
- 6. самый маленький фреймворк javascript
- 7. Самый маленький язык программирования
- 8. Что такое лучший маленький шрифт для eclipse?
- 9. самый маленький и самый крупный выпуск даты
- 10. самый маленький и самый большой из входов
- 11. Каков самый маленький формат аудиофайла?
- 12. Самый маленький сценарий лайтбокса jQuery
- 13. Java Самый большой и маленький
- 14. Найти самый маленький в массиве
- 15. Самый маленький веб-сервер Java
- 16. Самый маленький размер GGplot2 geom_text()
- 17. Что такое самый короткий хэш/
- 18. Самый маленький фон не показывает
- 19. Самый маленький набор наименьших колец
- 20. Самый маленький звук Soundcloud Player?
- 21. Что такое самый маленький встроенный браузер, который я могу использовать в C++?
- 22. Юридический Javascript
- 23. Что такое самый простой способ создать файл настроек в python
- 24. Что такое самый простой способ показать файл журнала в WPF
- 25. Самый маленький эпсилон, чтобы изменить результат сравнения
- 26. Что такое самый быстрый звуковой модуль Python?
- 27. Самый маленький, самый большой и средний из массива п размера
- 28. Самый большой и самый маленький элемент двоичного дерева Haskell
- 29. Что такое tsr-файл
- 30. Что такое .episode файл ..?
(PlugIn/WebStart отклонит любой zip/jar, который не начинается с магического номера заголовка записи (для защиты от GIFAR).) –
Нет, самый маленький юридический/действительный почтовый файл - 22 байта: '80 75 05 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00. Однако я не знаю о файлах jar. – Cheeso
@Cheeso, не zip, который должен начинаться с 'PK' ... wherease' 80 75' не так ...: S –