Я использую веб-службу, которая помогает мне извлекать файлы из концентратора сообщений. Тип файла может быть XML или ZIP.ZIP-файл коррумпированный выбор из приложения SOAP
Для файлов ZIP тип содержимого двоичный.
У меня есть этот кусок кода:
private String extractPayload(String filePath, AttachmentPart attach){
FileOutputStream fileStream = null;
try {
DataHandler handler;
handler = attach.getDataHandler();
File f = new File(filePath);
fileStream = new FileOutputStream(filePath);
handler.writeTo(fileStream);
fileStream.flush();
} catch (Exception ex) {
logger.info("####Exception:" + ex.getMessage());
} finally {
if (fileStream != null)
fileStream.close();
}
return filePath;
}
Теперь код работает отлично для извлечения XML-файлов, хотя, в случае ZIP-файлов, файл оказывается поврежден. Я загрузил тот же файл с помощью файловой утилиты из Центра обмена сообщениями и выяснил, что размер файла, который я получаю через приложение SOAP, составляет около 4 байтов больше, чем его фактический размер.
Обновление: Кодировка вложения 7-разрядная (если это может быть препятствование), в то время как другое вложение, содержащее другой почтовый индекс, кодируется Quote-printable. Оба zips извлекаются из одной и той же веб-службы (хотя они различаются в кодировке), и оба из них повреждены.
Редактировать: Я сильно чувствую, что проблема связана с кодировкой, в которой я получаю файл, и вот сравнение между фактическим файлом и полученным файлом вложения.
Фактический размер файла: 9031 байт Полученное Размер вложения файла: 9066 байт
Я пытался сравнивать оба файла в редакторе документов, чтобы найти различия между обоими. Оригинального файл принесенных различия файлов вложений (Binary редактор):
изд изменен на 3f, дБ изменяются на 3f, d6 изменены на 3f, 85 изменен на 3f, d0 изменены на 3f,
и так далее.
Почтовый файл содержит файл PDF и XML.
Линия старта обоих файлов похожи, начиная с ПК
Я думаю, вы имеете в виду 'write (buf, 0, n)' - но предпосылка верна. –
Пробовал уже. Проблема в том, что zis.read() выдает исключение java.util.ZipException: Недействительное действие блока. Кроме того, entry.getSize() (для получения размера записи Zip) возвращает -1. –
@PriyanshuJha: * Где * это бросает это? Вы должны, по крайней мере, внести изменения, о которых говорил шазин ...потому что в настоящее время это очень реальная ошибка. –