额外的奇数符号被添加到序列化输出中



我正在尝试通过编写自己的代码来序列化字符串对象以获取该对象的字节数组,而不是使用string.getBytes((,但我在输出中得到了额外的奇怪符号,如下所示

输出

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import java.util.Arrays;
public class Demo {
private static final String OUTPUT_FILE = "D:\testFile.txt";
public static void main(String[] args) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
byte[] bytes;
String content = "Hello Java Code Geeks";
out = new ObjectOutputStream(bos);
out.writeObject(content);
out.flush();
bytes = bos.toByteArray();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
outputStream.write(bytes);

System.out.println(Arrays.toString(outputStream.toByteArray()));
System.out.println(outputStream.toString());
// Write the internal buffer to an output stream
outputStream.writeTo(new FileOutputStream(OUTPUT_FILE));
}
}

PS:我应该使用java.io.OutputStream类,但如果有任何其他方法可以从我的方式或string.getBytes((以外的对象获取ByteArray,请随时建议。

不使用string.getBytes((的解决方法是一种通用的方法,可以从任何类型的对象(包括用户defind对象(中获取字节数组。

您需要将其作为对象读取

public static void main(String[] args) throws IOException, ClassNotFoundException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
byte[] bytes;
String content = "Hello Java Code Geeks";
out = new ObjectOutputStream(bos);
out.writeObject(content);
out.flush();
bytes = bos.toByteArray();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
outputStream.write(bytes);
System.out.println(Arrays.toString(outputStream.toByteArray()));
System.out.println(outputStream.toString());
// correct string printed out
System.out.println(new ObjectInputStream(new ByteArrayInputStream(outputStream.toByteArray())).readObject());
}

ObjectOutputStream 将其他信息写入文件(例如.class名称等(,这些可能是您想知道的字符。

最新更新