对方是sqlserver image字段类型,读取使用base64转码后通过xml传送给我。我获取后将传送过来的文本解码后生成图片。现在奇怪的是,所有源图片类型是bmp的都可以正常生成,而且生成文件的后缀可以任意是bmp,jpg都可以正常显示图片。
但是源图片类型是jpg的都生成不了。不知道是怎么回事。报错:
Exception in thread "main" java.io.IOException: Write error
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:260)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
at com.jetsum.isolation.util.Test.main(Test.java:40)对方(数据源)代码片段:private String buildXmlData(XyglLlpxjl xyglLlpxjl) {
     StringBuffer sb = new StringBuffer();
     sb.append("");
     sb.append("<?xml version=\"1.0\" encoding=\"GBK\" ?><root>");
     if(xyglLlpxjl.getId() != null){
     sb.append("<ID><![CDATA["+xyglLlpxjl.getId()+"]]></ID>");
     if(xyglLlpxjl.getJxbh() == null || "".equals(xyglLlpxjl.getJxbh())){
         sb.append("<JXBH><![CDATA["+"\"\"]]></JXBH>");
         }
         else{
         sb.append("<JXBH><![CDATA["+xyglLlpxjl.getJxbh()+"]]></JXBH>");
         }
         if(xyglLlpxjl.getJxmc() == null || "".equals(xyglLlpxjl.getJxmc())){
         sb.append("<JXMC><![CDATA["+"\"\"]]></JXMC>");
         }
         else{
         sb.append("<JXMC><![CDATA["+xyglLlpxjl.getJxmc()+"]]></JXMC>");
         }
         if(xyglLlpxjl.getXybh() == null || "".equals(xyglLlpxjl.getXybh())){
         sb.append("<XYBH><![CDATA["+"\"\"]]></XYBH>");
         }
         else{
         sb.append("<XYBH><![CDATA["+xyglLlpxjl.getXybh()+"]]></XYBH>");
         }
         if(xyglLlpxjl.getXymc() == null || "".equals(xyglLlpxjl.getXymc())){
         sb.append("<XYMC><![CDATA["+"\"\"]]></XYMC>");
         }
         else{
         sb.append("<XYMC><![CDATA["+xyglLlpxjl.getXymc()+"]]></XYMC>");
         }
         if(xyglLlpxjl.getXyzp() == null){
         sb.append("<XYZP><![CDATA["+"\"\"]]></XYZP>");
         }
         else{
         sb.append("<XYZP><![CDATA["+Base64.encode(xyglLlpxjl.getXyzp())+"]]></XYZP>");
         }
             sb.append("</root>");
     }
     return sb.toString();
    }   
}
我转换的代码(我是先将对方发过来的数据存在数据库中,照片的那个字段用的是oracle的long类型)。
String sql = "select * from XYGL_LLPXJL where pid=66";
Connection conn = DBConnectorUtil.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery(sql);
String is = null;
while(rs.next()){
is = rs.getString("XYZP");
}
byte[] bt = Base64.decode(is); 
System.out.println(new String(bt));
File file = new File("e:/a.jpg");
FileOutputStream fos = new FileOutputStream(file);  
BufferedOutputStream  bos = new BufferedOutputStream(fos);  
bos.write(bt);  
fos.close();
bos.close();