【发布时间】:2011-01-06 15:22:16
【问题描述】:
我遇到了一个我无法弄清楚的问题。这是问题的定义: 我在 Db2/Linux 环境的 Blob 列中有一些数据。在使用 JDK 压缩(执行此操作的代码在 Linux 环境中运行)压缩 byte[] 之后,将 Blob 写入 DB2。 我正在尝试编写一个简单的程序来读取其中一些数据解压缩它(使用 JDK)并从 Windows 环境(我的开发环境)中的解压缩字节数组创建一个字符串。问题是在我解压 Blob (byte[]) 后,解压后的字节数组的长度通常比预期的长 1-3 个字节。我的意思是偏移量和长度字段也存储在数据库中。所以在这种情况下,解压后的字节数组的长度通常比数据库中存储的长度要长,只有几个字节。因此,如果我从解压缩的字节数组中创建一个 String 对象,并使用数据库中的 offset 和 length 字段使用 substring(offset, length) 方法创建另一个 String 对象,我的第二个 String(我通过使用 substring 方法得到的那个)是更短。
一个例子是: 数据库记录包含一个 blob,偏移量:0,长度:260,409 解压blob后 -
compressedByte[].length - 71,212
decompressedByte[].length - 260,412
new String(decompressByte[]).length() - 260,412
new String(decompressByte[]).subString(0, 260,409).length() - 260409
对于其他一些输入记录,我看到的差异是长度在 1-3 个字节之间。
我对这个问题有点困惑,想知道是否有人可以提出任何建议,以便我可以进行更多调试来解决这个问题。我想知道这是否可能与字节在 Linux 环境中的存储/写入方式以及它们在 Windows 中的读取方式有关?感谢您的帮助。
【问题讨论】:
标签: java windows linux byte inflate