java– 将ArrayList转换为字节数组

java– 将ArrayList转换为字节数组,第1张

概述我有一个代码,我将数组列表转换为字节数组,然后将该字节数组保存为MySQL数据库中的BLOB.以下是代码: - Object temp = attributes.get(columnName); if (temp instanceof List && temp != null) { List extraAttributes = (Ar

我有一个代码,我将数组列表转换为字节数组,然后将该字节数组保存为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转换为字节数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1167521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)