gpt4 book ai didi

java - 将 ArrayList 转换为字节数组

转载 作者:可可西里 更新时间:2023-11-01 06:47:55 27 4
gpt4 key购买 nike

我有一个代码,我将数组列表转换为字节数组,然后将该字节数组作为 BLOB 保存在 MySQL 数据库中。下面是代码:-

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,我将使用相同的代码将 ArrayList 转换为 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[] 的示例代码。

一种合理的方法是使用 UTF-8 编码,就像 DataOutputStream 对列表中的每个字符串所做的那样。对于字符串,它写入 2 个字节作为 UTF-8 编码的长度,后跟 UTF-8 字节。

如果您在另一端不使用 Java,这将是可移植的。下面是对 ArrayList 进行编码和解码的示例:

// example input list
List<String> list = new ArrayList<String>();
list.add("foo");
list.add("bar");
list.add("baz");

// write to byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(baos);

for (String element : list) {
out.writeUTF(element);
}
byte[] bytes = baos.toByteArray();

// read from byte array
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
DataInputStream in = new DataInputStream(bais);
while (in.available() > 0) {
String element = in.readUTF();
System.out.println(element);
}

关于java - 将 ArrayList 转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20869325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com