当前位置: 首页 > 面试题库 >

通过Java中的Blob内容创建文件的代码段

漆雕伟志
2023-03-14
问题内容

我在Oracle 9的数据库blob列中存储了一些文件。

我想将那些文件存储在文件系统中。

这应该很容易,但是我找不到正确的选择。

如何在Java中执行此操作?

 PreparedStatement ptmst = ...
 ResutlSet rs = pstmt.executeQuery();
 rs.getBlob();
 // mistery 
 FileOutputStream out = new FileOutputStream();
 out.write(); // etc et c

我知道应该是这样的…我不知道被评论为有

谢谢

编辑

我终于从大卫的问题中得到了这一点。

这是我的懒惰实现:

PreparedStatement pstmt = connection.prepareStatement("select BINARY from MYTABLE");
ResultSet rs = pstmt.executeQuery();
while( rs.next() ) {
    Blob blob = rs.getBlob("BINARY");
    System.out.println("Read "+ blob.length() + " bytes ");
    byte [] array = blob.getBytes( 1, ( int ) blob.length() );
    File file = File.createTempFile("something-", ".binary", new File("."));
    FileOutputStream out = new FileOutputStream( file );
    out.write( array );
    out.close();
}

问题答案:

您希望将blob作为输入流并将其内容转储到输出流。因此,“痛苦”应类似于:

Blob blob = rs.getBlob(column);
InputStream in = blob.getBinaryStream();
OutputStream out = new FileOutputStream(someFile);
byte[] buff = new byte[4096];  // how much of the blob to read/write at a time
int len = 0;

while ((len = in.read(buff)) != -1) {
    out.write(buff, 0, len);
}

如果您发现自己做了很多这样的IO工作,则可以考虑使用Apache Commons
IO
来处理细节。然后,设置流之后的所有内容都将是:

IOUtils.copy(in, out);


 类似资料:
  • 问题内容: Jenkins控制台日志:(获得例外:由用户Edgar Yu启动在持久性级别中运行:MAX_SURVIVABILITY [Pipeline]节点在/ var / jenkins_home / workspace / test2中的Jenkins上运行[Pipeline] {[Pipeline]阶段[Pipeline] {(构建) [管道]回声大厦.. [管道]回声詹金斯 [Pipeli

  • Jenkins控制台日志:(得到异常:由用户Edgar Yu启动,运行在耐久性级别:MAX_SURVIVABILITY[Pipeline]节点,在/var/Jenkins_home/workspace/test2[Pipeline]{[Pipeline]stage[Pipeline]{(Build)[Pipeline]echo Building..[Pipeline]echo Jenkins [管

  • 将数据帧中的数据写入路径path=rootcontainer/container1“/”fileName df。重新划分(1)。写格式(“com.databricks.spark.csv”)。选项(“标题”、“true”)。选项(“分隔符”,分隔符)。选项(“quote”,“\u0000”)。模式(SaveMode.Overwrite)。保存(路径) 执行上述命令时,除了在root容器/容器1/文

  • 本文向大家介绍Java创建文件且写入内容的方法,包括了Java创建文件且写入内容的方法的使用技巧和注意事项,需要的朋友参考一下 前两天在项目中因为要通过http请求获取一个比较大的json数据(300KB左右)并且保存,思来想去,最后还是决定将获取到的json数据以文件的形式保存下来,每次使用的时候去读取文件就可以了。 废话不多说了,直接上代码。 以下是代码截图,文章结尾会有完成的代码文件可供下载

  • 我正在编写一个Java Web服务,可以在其中上传3D对象,对其进行操作并存储它。 我试图做的是创建一个<code>AIScene作为输入参数,即文件本身(它的内容)。 我在文档中找不到这样做的方法,所有导入方法都需要路径。 现在,我要看一下Assimp的java版本和C版本。用哪一个来解决这个问题并不重要。 编辑:我试图完成的代码: 调试方法时,我在绑定到本机的方法中发现了访问冲突: 这是信息:

  • 问题内容: 我正在尝试完成一个小程序。 我有一个文本文件(.txt),用于在我拥有的对象上存储不同的数据。 下一个是文件的结构(例如data.txt): 每个对象都由我建立的称为Cars的类实现。因此,第一行是汽车的类型,第二年是建造年份,第三行是里程,第四行是燃料类型,第五行是汽车的颜色。 因此,基本上,我需要打开文件,然后在将程序执行到带有对象的数组中时将数据加载到内存中。 我可以打开该文件,