0

我需要 <row>⠁⠇⠕⠝⠛⠀⠺⠊⠞⠓⠀⠍⠁⠞⠓⠑⠍⠁⠞⠊⠉⠁⠇⠀⠉⠕⠝⠞⠑⠝⠞&lt;/row>从文件中读取该行,然后写回。但是当我在文件中写回内容时

<row>�⠃⠕⠧⠑⠀⠙⠑�⠕⠞⠑⠀�⠀⠊�⠞⠑⠗⠛⠗�⠞⠊⠕�</row>

你能帮我修一下吗?我需要在java中做到这一点

谢谢!

4

3 回答 3

2

这显然是一个文本编码问题。问题可能在阅读或写作时发生,或者在再次阅读所写内容时发生。您的输出看起来像是被误解的 little-endian UTF-16(除了看起来像普通 ASCII 的标签)。

顺便说一句,您的“非文本”评论只是误导-任何字符数据都是文本的,这些都是同义词。

于 2012-07-08T08:52:38.010 回答
0

您需要使用二进制流而不是字符流。

换句话说,您正在这样做:http ://docs.oracle.com/javase/tutorial/essential/io/charstreams.html

但你应该这样做:http ://docs.oracle.com/javase/tutorial/essential/io/bytestreams.html

于 2012-07-08T06:46:35.660 回答
0

编辑:现在我们得到了<row>部分,看起来它毕竟是文本数据。但是,您没有向我们提供有关生成此文件的内容或<row>标签之间的数据的含义的信息。它是文本,还是二进制数据,并且不知何故你打算从阅读文本<row>转向阅读二进制数据?你怎么知道<row>终点在哪里?

您必须了解数据的含义和格式——我们无法为您做到这一点。如果您能解释含义和格式,我们可以帮助您将其转化为代码……但如果没有这些信息,我们将无能为力。


您谈论阅读“行” - 但随后您提供非文本数据。二进制数据中没有“线”这样的概念。

如果您当前正在使用Reader某种描述(例如FileReader) -不要。它们是为文本数据设计的。试图将二进制数据视为文本几乎肯定会丢失信息。

用 an 读取,用 anInputStream写入OutputStream,一切都应该很好(当然,假设你正确使用它们 - 特别是InputStream.read适当地使用返回值)。

于 2012-07-08T06:46:59.683 回答