环境:MySQL version: 5.0.22-community-nt
     数据库中有个 table demoimage(content varchar,image blob)  Java代码如下:                 package com.demo;
import java.io.*;
import java.sql.*;
public class ImageDemoS { private static Connection conn=null;
    private PreparedStatement pst=null;
private ResultSet rst=null;
/**
 * @param args
 * @throws Exception 
 */
public void queryData(Connection conn) throws Exception{
 String sql="select image from imagedemo where content = 'my.png'";
 pst=conn.prepareStatement(sql);
rst=pst.executeQuery();
rst.next();
FileOutputStream os=new FileOutputStream("E://mypic.png");;
InputStream in = rst.getBinaryStream("image");
byte b[] = new byte[0x7a120];
int i;
int j=0;
 while((i=in.read(b) )!=(-1)){
                 System.out.println(j++ +"字节");
 os.write(i);
 in.read(b);
 
 }

 os.flush();
 os.close();
}
调用这个方法时可以输入文件,但其实际大小为1kb根本无法显示。后台输出j的值也只有0kb而已。
大家帮我看一下

解决方案 »

  1.   

    while((i=in.read(b) )!=(-1)){
    System.out.println(j++ +"字节");
    os.write(i);
    in.read(b);
    }
    你讀出 b 卻寫入 i,還有多讀了一次b沒寫進檔案。
      

  2.   

    wo我将whie中多余的in.read去掉单还是读不出文件,输出为1kb.
    大家快来帮帮忙!!
      

  3.   

    谢谢大家乐问题解决了,希望大家提一提Java IO操作中的注意问题??马上结贴给大家分值,虽然我知道大家并不是为这个而回答的。谢谢。。