当前位置: 首页 > 面试题库 >

读/写带字符串的BINARY文件?

欧阳意蕴
2023-03-14
问题内容

如何从二进制文件写入/读取字符串

我试过使用writeUTF/ readUTF(DataOutputStream / DataInputStream),但这太麻烦了。

谢谢。


问题答案:

暂时忘掉FileWriter,DataOutputStream。

  • 对于二进制数据,使用OutputStreamInputStream分类。他们处理byte[]
  • 对于文本数据,使用ReaderWriter分类。他们处理String可以存储所有类型的文本,因为它内部使用Unicode。

通过指定默认为OS编码的编码,可以完成从文本到二进制数据的转换。

  • new OutputStreamWriter(outputStream, encoding)
  • string.getBytes(encoding)

因此,如果要避免byte[]使用String,则必须滥用一种编码,该编码以任何顺序覆盖所有256个字节的值。因此,没有“ UTF-8”,而是“
windows-1252”(也称为“ Cp1252”)。

但是内部会发生转换,在极少数情况下可能会发生问题。例如é,在Unicode中可以是一个代码,也可以是两个代码e+结合变音符号right-accent
'。为此存在一个转换函数(java.text.Normalizer)。

已经导致问题的一种情况是不同操作系统中的文件名。MacOS具有Windows之外的另一种Unicode规范化,因此在版本控制系统中需要特别注意。

因此,原则上最好使用较麻烦的字节数组或ByteArrayInputStream或java.nio缓冲区。还要注意String char是16位的。



 类似资料:
  • 主要内容:读字符串函数 fgets,写字符串函数 fputsfgetc() 和 fputc() 函数每次只能读写一个字符,速度较慢;实际开发中往往是每次读写一个字符串或者一个数据块,这样能明显提高效率。 读字符串函数 fgets fgets() 函数用来从指定的文件中读取一个字符串,并保存到字符数组中,它的用法为: str 为字符数组,n 为要读取的字符数目,fp 为文件 指针。 返回值:读取成功时返回字符数组首地址,也即 str;读取失败时返回 NULL

  • 问题内容: 我需要在文本文件中读写数据,但是还无法弄清楚该怎么做。 我在Swift的iBook中找到了此示例代码,但我仍然不知道如何写入或读取数据。 问题答案: 为了进行读写,您应该使用可写的位置,例如documents目录。以下代码显示了如何读写简单的字符串。您可以在操场上进行测试。 雨燕3.x-5.x 斯威夫特2.2 斯威夫特1.x

  • 问题内容: 我认为能够将文本文件读入和写出字符串数组的能力是相当普遍的要求。从一种语言开始消除最初访问数据库的需求时,它也非常有用。Golang中是否存在? 例如 和 我宁愿使用现有的而不是重复的。 问题答案: 从Go1.1版本开始,有一个bufio.Scanner API可以轻松读取文件中的行。考虑上面的以下示例,该示例使用Scanner重写:

  • 我需要在android中以字符串的形式加载一个xml文件,以便将其加载到TBXML xml解析器库并对其进行解析。我现在必须以字符串形式读取文件的实现需要大约2秒,即使对于一些KBs的非常小的xml文件也是如此。在Java/Android中,有没有已知的快速方法可以将文件读取为字符串? 这是我现在拥有的代码:

  • 主要内容:字符读取函数 fgetc,字符写入函数 fputc在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块)。本节介绍以字符形式读写文件。 以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中写入一个字符。主要使用两个函数,分别是 fgetc() 和 fputc()。 字符读取函数 fgetc fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。fget