gpt4 book ai didi

java - ObjectOutputStream 写入额外的字符

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:47 25 4
gpt4 key购买 nike

我知道在写文本时应该使用 writer 而不是 outputstreams,但我仍然不明白为什么在运行此程序后 outputStream.txt 文件中会出现额外的字符:

public static void main(String[] args) throws FileNotFoundException, IOException
{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("C:\\Data\\tmp\\outputStream.txt")));
oos.writeObject("SomeObject");
oos.writeUTF("SomeUTF");
oos.flush();
oos.close();
BufferedWriter writer = new BufferedWriter(new FileWriter(new File("C:\\Data\\tmp\\outputWriter.txt")));
writer.write("SomeObject");
writer.write("SomeUTF");
writer.flush();
writer.close();
}

文件 outputWriter.txt 是 17bytes,正如预期的那样,但是 outputStream.txt 是 28,包括一些无法识别的文本。这是为什么?

最佳答案

ObjectOutputStream 用于将 Java 对象写入流。这意味着不会将 String 的值写入流;相反,如果将写“下一个对象是 String,它的值是 SomeObject”。

所以如果你想要一个纯文本文件,你必须使用 Writer API。

注意:您的代码依赖于平台。如果你想让它独立于平台,那么你必须使用:

    FileOutputStream stream = new FileOutputStream( file );
return new BufferedWriter( new OutputStreamWriter( stream, Charset.forName("UTF-8") ) );

关于java - ObjectOutputStream 写入额外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22376783/

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