我需要从文件中读取行<row>⠁⠇⠕⠝⠛⠀⠺⠊⠞⠓⠀⠍⠁⠞⠓⠑⠍⠁⠞⠊⠉⠁⠇⠀⠉⠕⠝⠞⠑⠝⠞</row>
然后回写。但是当我在文件中写回内容时
<row>â ?⠃⠕⠧⠑⠀⠙⠑â ?â •â žâ ‘â €â ?⠀⠊â ?⠞⠑⠗⠛⠗â ?â žâ Šâ •â ?</row>
你能帮我解决一下吗?我需要在java中执行此操作
谢谢!
答案 0 :(得分:2)
这显然是文本编码问题。问题可能发生在阅读或写作时,或者再次阅读所写内容时。您的输出看起来像是错误解释的little-endian UTF-16(除了看起来像纯ASCII的标记)。
BTW你的“非文字”评论只是误导 - 任何字符数据都是文本的,这些都是同义词。
答案 1 :(得分:0)
您需要使用二进制流而不是字符流。
换句话说,你这样做:http://docs.oracle.com/javase/tutorial/essential/io/charstreams.html
但应该这样做:http://docs.oracle.com/javase/tutorial/essential/io/bytestreams.html
答案 2 :(得分:0)
编辑:现在我们已经有了<row>
部分,看起来 毕竟是文本数据。但是,您没有向我们提供有关生成此文件的内容或<row>
标记之间的数据的信息。 是它是文本,还是二进制数据,不知怎的,你打算从阅读<row>
的文本转到阅读二进制数据?你是怎么想知道<row>
结束的地方?
您已了解数据的含义和格式 - 我们无法为您做到这一点。如果您可以解释其含义和格式,我们可以帮助您将其转换为代码......但如果没有这些信息,我们就无能为力。
你谈到阅读“行” - 然后你提供非文本数据。在二进制数据中没有“线”这样的概念。
如果您目前使用Reader
某些说明(例如FileReader
) - 不。它们专为文本数据而设计。试图将二进制数据视为文本几乎可以保证丢失信息。
使用InputStream
阅读,使用OutputStream
进行编写,一切都应该正常(假设您正确使用它们 - 当然 - 特别是使用InputStream.read
的返回值)。