gpt4 book ai didi

java - 将 blob 提取到文件 : some files are missing data

转载 作者:行者123 更新时间:2023-12-01 13:54:40 24 4
gpt4 key购买 nike

我正在尝试从 Oracle 数据库中提取 TIF 文件。大多数从 blob 转换的文件都可以正常工作,但某些文件似乎缺少几千字节。

例如,当我使用 SQL GUI 提取文件时,我得到一个大小为 912,390 字节的 TIF 文件。当我使用我的方法时,我得到一个大小为 909,312 字节的文件。缺少 3078 字节意味着我无法打开该文件。我在做什么导致文件不完整?

//...
if ((FileOutDir != null) && (blobSQL != null) && (conn != null)) {
PreparedStatement selBlobs = null;
OutputStream fos = null;

if (conn != null) {
if (blobSQL != null) {
try {

selBlobs = conn.prepareStatement(blobSQL);
ResultSet rs = selBlobs.executeQuery();

Blob blob = null;
InputStream is = null;

int b = 0;
int cols = rs.getMetaData().getColumnCount();

String filepath = FileOutDir;

while (rs.next()) {

blob = rs.getBlob(1);
is = blob.getBinaryStream();
filepath += "/";

for (int c = 2; c <= cols; c++) {
filepath += rs.getObject(c).toString() + "_";
}
filepath = filepath.substring(0,
filepath.length() - 1);
filepath += fileSuffix;

fos = new BufferedOutputStream(new FileOutputStream(filepath));

while ((b = is.read()) != -1) {
fos.write(b);
}

filepath = FileOutDir;
b = 0;
}

} catch (Exception e) {
JOptionPane.showMessageDialog(gui, e.toString());
} finally {
try {
selBlobs.close();
fos.close();
} catch (Exception e2) {
System.out
.println("Problem closing BlobToFile connections: "
+ e2.toString());
}
}
//...

最佳答案

尝试在 fos.close(); 之前添加 fos.flush(); 并查看是否有帮助。

关于java - 将 blob 提取到文件 : some files are missing data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19686232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com