В этой статье исследуется сжатие и декомпрессию файла в Java, сосредотачиваясь на DeflaterOutputStream
и классы FulaterInptReam
для сжатия дефтата. Эти классы предлагают эффективные способы обработки сжатых данных.
Core Concepts:
java обеспечивает встроенную поддержку для сжатия и декомпрессирующих файлов с использованием пакета java.util.zip .
DeflateroutputStream сжимает данные в формат дефлятного (часто используемого в Zip Archives), в то время как
fulaterInputStream декомпрессирует данные в одном и том же формате.
]
Пример: сжатие файла в Zip ]
Этот пример демонстрирует, как сжать файл в архив Zip:]
try {
File file = new File(filePath);
String zipFileName = file.getName() ".zip";
FileOutputStream fos = new FileOutputStream(zipFileName);
ZipOutputStream zos = new ZipOutputStream(fos);
zos.putNextEntry(new ZipEntry(file.getName()));
byte[] bytes = Files.readAllBytes(Paths.get(filePath));
zos.write(bytes, 0, bytes.length);
zos.closeEntry();
zos.close();
} catch (FileNotFoundException ex) {
System.err.format("File not found: %s%n", filePath);
} catch (IOException ex) {
System.err.println("I/O error: " ex);
}
алгоритм для сжатия файла/декомпрессия: ]
общий алгоритм сжатия и декомпрессии файлов в Java включает эти шаги:]
] delfaterOutputStream
для записи сжатых данных. Читать данные из исходного файла с использованием fileInputStream
, написать в DeflaterOutputStream
и Close Streams. ]
fulaterInputStream
для чтения и распаковки данных. Напишите декаменные данные в файл назначения с помощью fileOutputStream
, и закрыть потоки. ]
ioexceptions
. ]
]
] в завершении, надежные примеры требуют большего количества обработки ошибок и управления путем файла, упрощенные фрагменты синтаксиса иллюстрируют основные операции:
]Compression:
fileInputStream inputStream = new FileInputStream (inputPath); FileOutputStream outputStream = new FileOutputStream (outputPath); DeflaterOutputStream компрессор = новый DefflaterOutputStream (outputStream); // ... записать данные из InputStream в компрессор ... compressor.close ();
FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
DeflaterOutputStream compressor = new DeflaterOutputStream(outputStream);
// ... write data from inputStream to compressor ...
compressor.close();
decompression: ]
fileInputStream inputStream = new FileInputStream (inputPath); FileOutputStream outputStream = new FileOutputStream (outputPath); Decompressor = new Inflaterinptream (inputStream); // ... записать данные от декомпрессора в outputStream ... decompressor.close ();FileInputStream inputStream = new FileInputStream(inputPath);
FileOutputStream outputStream = new FileOutputStream(outputPath);
DeflaterOutputStream compressor = new DeflaterOutputStream(outputStream);
// ... write data from inputStream to compressor ...
compressor.close();
подходы: существуют два основных подхода: сжатие/декомпрессия отдельных файлов и обработка нескольких файлов или каталогов. Примеры, представленные ранее в исходном тексте, демонстрируют сжатие с одним файлом с использованием
Zipoutputstream и более сложный пример для нескольких файлов. Обработка каталогов требует рекурсивной обработки для пересечения структуры каталога. Обратите внимание, что в исходных примерах кода не было правильной обработки пути файла и управления ошибками, что привело к filenotFoundException
. Всегда убедитесь, что надежная обработка ошибок и укажите правильные пути файла в вашем коде. ]
Java предлагает мощные инструменты для сжатия файлов и декомпрессии. Понимание
DeflaterOutputStream и fulaterInputStream
вместе с надлежащей обработкой ошибок и управлением путем файла имеет решающее значение для создания надежных и эффективных утилит сжатия. Не забудьте всегда обрабатывать потенциальные исключения и предоставлять соответствующие сообщения об ошибках пользователю. ]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3