【问题标题】:How to identify a zip compressed file in a Oracle-Database with Java如何使用 Java 识别 Oracle 数据库中的 zip 压缩文件
【发布时间】:2020-01-11 21:07:31
【问题描述】:

如何识别结果集条目是 BLOB 还是压缩 BLOB? 如果 BLOB 被压缩,我需要解压缩它。

PreparedStatement stmt = conn.prepareStatemant("select BLOB from X");
ResultSet rs = stmt.executeQuery();
while(rs.next()){
         Blob blob = rs.getBlob(1);
         if(isZippedBlob(blob)){
             Blob unzipBlob = unzipBlob(blob);
         }
     }
}

我会很感激

的实现版本
boolean isZippedBlob(Blob) 

或任何我能识别压缩 BLOB 和 BLOB 的算法。

【问题讨论】:

  • Zip 文件有一个 zip 文件头。您(或库)可以检查第一个字节以查看它是否具有 zip 标头。
  • @Kayaman 感谢您的建议。我使用 rs.getBlob(1).getBytes(1, (int) rs.getBlob(1).lengt());但我得到的值不适合这个特定的标题。

标签: java oracle11g zip blob


【解决方案1】:

我从 BLOB 读取字节

    byte[] bArr = rs.getBlob(1).getBytes(1, (int) rs.getBlob(1).length());

我收到了 31、-117、8。 .zip 的幻数是 50 4B 03 04 = 80 75 03 04 十进制 所以我很好奇,实际上它不是一个 zip 文件,而是一个 gzip,它以 1F 8B 08 -> 12 月的 31 139 08 开头。所以我需要做的就是将前 3 个字节与 31 139(256-117) 8 进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2023-03-21
    • 2010-09-19
    相关资源
    最近更新 更多