Ошибка: не в формате GZIP — попытайтесь распаковать поток GZIP, ранее сохраненный в поле базы данных.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка: не в формате GZIP — попытайтесь распаковать поток GZIP, ранее сохраненный в поле базы данных.

Сообщение Anonymous »

Потоковая передача меня сбивает с толку: как только я думаю, что уловил идею, мой код рушится.

Я пытаюсь принять строку, gzip сжать его и сохранить в базе данных PostGreSQL. ТОГДА я хочу получить его обратно и повторно преобразовать в выходной поток. Ошибка возникает в моей функции get, когда я пытаюсь прочитать поток в GZIPstream. Ошибка:

java.util.zip.ZipException: не в формате GZIP

Вот используемые функции чтобы сжать строку, а затем поместить ее в базу данных:

Код: Выделить всё

public Jstruct_FileImportRun setSnapshotXml(String inValue) throws IOException
{
return setSnapshotXml(new BufferedInputStream(new ByteArrayInputStream(inValue.getBytes())));
}

public Jstruct_FileImportRun setSnapshotXml(BufferedInputStream inValue)
{
try
{
ByteArrayOutputStream compressedBytes = new ByteArrayOutputStream(30000 * 1024);
GZIPOutputStream gzipStream = new GZIPOutputStream(compressedBytes);

byte[] transferBuffer = new byte[32 * 1024];
int readSize;
while ((readSize = inValue.read(transferBuffer)) != -1)
{
gzipStream.write(transferBuffer, 0, readSize);
}
inValue.close();
gzipStream.close();

getField(SNAPSHOT_XML).setValue(compressedBytes.toByteArray());
}
catch (IOException e)
{
throw new JstructException(e);
}

return this;
}
и вот код (который выдает ошибку), когда я пытаюсь его получить:

Код: Выделить всё

public static void getSnapshotXml(Connection inConn, Long inRunId, OutputStream inOutputStream) throws Exception
{
SQLQuery query = new SQLQuery()
.addSelect(SNAPSHOT_XML)
.addFrom(getTable())
.addWhereClause(FILE_IMPORT_RUN_ID + " = " + inRunId);

ResultSet rs = null;
try
{
rs = query.execute(inConn);
if (rs.next())
{
InputStream stream = rs.getBinaryStream(SNAPSHOT_XML.name());
GZIPInputStream gzipStream = new GZIPInputStream(stream);

byte[] transferBuffer = new byte[32 * 1024];
int readSize;
while ((readSize = gzipStream.read(transferBuffer)) != -1)
{
inOutputStream.write(transferBuffer, 0, readSize);
}

gzipStream.close();
inOutputStream.close();
}
}
finally
{
SQLUtil.closeResultSetAndStatement(rs);
}

}
опять же, в строке «GZIPInputStream gzipStream = new GZIPInputStream(stream);» возникает ошибка «java.util.zip.ZipException: Not in GZIP format» p>

Хальп!! что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/338 ... sly-stored
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Gzip -d возвращает «не в формате gzip» для файла, написанного с помощью BufferedWriter (GZIPOutputStream)
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Как распаковать, распаковать и преобразовать Android Rootfs в EXT4
    Anonymous » » в форуме Android
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Абзац iText накладывается на ранее сохраненный абзац.
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как распаковать GZip в Stream?
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Okhttp 3: как распаковать ответ gzip/deflate вручную с помощью Java/Android
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»