有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

oracle11g用java编写ORACLE BLOB文件

我将一个html文件从我的D驱动器上传到ORACLE数据库,现在我试图用一个新名称将同一文件检索到我电脑中的另一个驱动器,但我无法接收完全相同的文件,我使用的代码如下所示。 我的问题是如何获得存储在数据库中的文件的相同副本

import java.io.FileWriter;

import java.io.FileWriter;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class RBLOB {
public static void main(String args[])throws Exception
{
try(Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr");)
{
PreparedStatement ps=con.prepareStatement("select * from players");
ResultSet rs=ps.executeQuery();
rs.next();
InputStream is= rs.getBinaryStream(2);

FileWriter fw=new FileWriter("C:\\Users\\y_san\\Desktop\\test.html");
while(is.read()!=-1)
{
  fw.write(is.read());
 System.out.println(is.read());
 fw.flush();
}
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
}

共 (1) 个答案

  1. # 1 楼答案

    你在这里读到的字节

      while(is.read()!=-1) 
    

    将永远不会显示在文件中或输出,因为您已经读取了下一个字节以将其写入

    while(is.read()!=-1) { // byte 1 read
    fw.write(is.read());  // byte 2 read     
    System.out.println(is.read()); // byte 3 read
    

    试着读入一个字节数组,写出读取的字节数

       byte [] buf = new byte [1024];
       int len = is.read(buf);
       while (len > 0){
           fw.write (buf,0,len);
            // more stuff
    
            // read next chunk
           len = is.read(buf);
        }