我有一个代码,我将数组列表转换为字节数组,然后将该字节数组保存为MySQL数据库中的BLOB.以下是代码: –
Object temp = attributes.get(columnname);if (temp instanceof List && temp != null) { List extraAttributes = (ArrayList) temp; resultStmt.setBytes(currentIndex,createByteArray(extraAttributes));
createByteArray方法定义如下:
private byte [] createByteArray( Object obj) { byte [] barray = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream objOstream = new ObjectOutputStream(baos); objOstream.writeObject(obj); barray = baos.toByteArray(); } catch (Exception e) { TraceDbLog.writeError("Problem in createByteArray",e); } return barray; }
以上代码是为了将HashMap写入BLOB而编写的,我使用相同的方法将HashMap转换为BLOB.
我正在读取blob时读取代码中出现的问题.
private Object readBytes (ResultSet rs,String columnname) throws sqlException { ObjectinputStream ois = null; byte [] newArray; Object obj = null; try { newArray = rs.getBytes(columnname); ois = new ObjectinputStream (new ByteArrayinputStream(newArray)); obj = ois.readobject (); }
在读取部分中,对象不是来自hasMap的arrayList,而在eclipse中的调试透视中,eclipse也无法检查即将到来的对象.
我也尝试将对象强制转换为List,但仍无法获得正确的响应.
请告诉我读/写上述BLOB是否有任何缺陷.最佳答案我已经将转换ArrayList的样本编码添加到byte [].
一种合理的方法是使用像DataOutputStream这样的UTF-8编码为列表中的每个字符串.对于字符串,它为UTF-8编码的长度写入2个字节,后跟UTF-8字节.如果您不在另一端使用Java,这将是可移植的.以下是编码和解码ArrayList的示例:
// example input ListList
总结 以上是内存溢出为你收集整理的java – 将ArrayList转换为字节数组全部内容,希望文章能够帮你解决java – 将ArrayList转换为字节数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)