【发布时间】:2018-06-07 11:13:45
【问题描述】:
我正在尝试通过编写自己的代码来序列化字符串对象以获取该对象的字节数组,而不是使用 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 类,但如果有任何其他方法可以从我的方法或 以外的对象获取 ByteArray string.getBytes() 随意提出建议。
不使用 string.getBytes() 的原因是需要一种从任何类型的对象(包括用户定义对象)获取字节数组的通用方法。
【问题讨论】:
-
这听起来可能是编码问题。你的源字符串在序列化之前有什么字符集?
-
@Tim Biegeleisen 我声明我的字符串如下 String content = "Hello Java Code Geeks";如何知道我的源字符串在序列化之前的字符集?
标签: java arrays serialization outputstream