将byte[]输出到.txt文件

3

我正在尝试将一个字节数组输出到文件。当我调用System.out.println(output_stream)时,我创建的字符串正确显示。但是,当我使用FileOutputStream时,它输出不正确。这是我目前的代码。有什么建议吗?

FileOutputStream fos = new FileOutputStream("outputFile.txt"); 
OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8");

String received_string = new String(rPacket.getData(), 0, rPacket.getLength(), "UTF-8");

System.out.println(received_string);
out.write(received_string, 0, received_string.length());

当我调用System.out.println(received_string)时,控制台会显示信息。然而,它没有正确输出文件。我之前问过类似的问题,但现在在输出方面遇到了困难。感谢任何帮助。


2
字节不是文本。你想要显示什么? - SLaks
1
你想输出一个byte[]还是一个String? - Thilo
2
你说“它没有正确输出文件”。在你关闭写入器后,文件包含什么? - NovaDenizen
那里有亚洲风格的字符,而 System.out.println 输出 ASCII 英文字符。 - user2184598
字节文件是从类似的文件创建的,并通过网络传输。我得到的结果是一个字节数组,我认为这方面我无能为力。 - user2184598
4个回答

1

0
不要使用String或Writer。直接将字节从数据包复制到文件中即可。
fos.write(rPacket.getData(), rPacket.getOffset(), rPacket.getLength());

那么你就不可能破坏数据。


0

你的代码看起来有点奇怪(你想要字节还是字符串),但应该没问题。

你在文件中找到了什么?在查看之前,你关闭了流/写入器吗?如果没有,很可能它仍然被缓冲在某个地方。

不过,如果你真的只想将数据包传输到文件中,尽量避免转换为字符串。


-1

尝试使用 BufferedWriter ..

BufferedWriter writer = new BufferedWriter(new FileWriter("outfile"));
writer.write(received_string);

使用FileWriter会使情况变得更糟,因为它使用平台默认编码,而OP想要使用UTF-8。 - user207421

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接