我使用反射来获取包含字符串作为值的对象。然后我将此对象转换为字节数组并保存到文件中。 当我打开文件时,在预期的字符串前面附加了一些额外的字符。
FileOutputStream fos = new FileOutputStream("C:\\Temp\\test.txt");
Object obj = new String("Hello World"); //replaced reflection code with string object ,still not working
fos.write(toByteArray(obj));
fos.close();
public static byte[] toByteArray(Object obj) throws IOException {
byte[] bytes = null;
ByteArrayOutputStream bos = null;
ObjectOutputStream oos = null;
try {
bos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(bos);
oos.writeObject(obj);
oos.flush();
bytes = bos.toByteArray();
} finally {
if (oos != null) {
oos.close();
}
if (bos != null) {
bos.close();
}
}
return bytes;
}
文件中的输出:
文件中的预期输出:
Hello World
我不知道为什么这个额外的字符出现在我的原始字符串前面,同时将对象转换为字节数组。你们能帮助我吗
答案 0 :(得分:2)
您正在使用<input type="text"
name="username"
v-model="user.name"
:value="'The user name is: '+user.name">
对象在其中写入字符串
你不会在文件中输出人类表示,而是字符串的序列化形式。
要获得输出文件中写入的java.io.ObjectOutputStream
的人工代表,您应该使用String
并使用方法:PrintStream
。
答案 1 :(得分:1)
ObjectOutputStream#writeObject通过序列化将对象写入输出流。序列化允许开发人员轻松地将对象保留在磁盘上或通过网络传输。
因此,在您的情况下,它存储String类的实例,而不是写&#34; Hello World&#34;,
的字符我建议阅读序列化:https://www.tutorialspoint.com/java/java_serialization.htm