如何使用Java识别Oracle数据库中的zip压缩文件
如何识别Resultset条目是BLOB还是压缩BLOB? 如果这一块是拉链,我需要解压它如何使用Java识别Oracle数据库中的zip压缩文件,java,oracle11g,zip,blob,Java,Oracle11g,Zip,Blob,如何识别Resultset条目是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)){
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。我从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文件,它在12月从1F 8B 08->31 139 08开始。所以我需要做的就是将前3个字节与31 139(256-117)8进行比较。zip文件有一个zip文件头。您(或库)可以检查第一个字节,看看它是否有zip头。@Kayaman感谢您的建议。我使用rs.getBlob(1.getBytes(1,(int)rs.getBlob(1.lengt());但是我得到的值不符合这个特定的标题。