我找不到有关此的任何文档...我想将一堆 char 写入文件并确保文件的大小是 # of chars 字节。
有谁知道使用什么类?
我想将一堆字符写入文件,并确保文件的大小是 # of chars 字节。
好的 - 所以你需要选择一个每个字符只使用一个字节的编码,例如 ISO-8859-1。创建一个FileOutputStream
,将其包装在一个OutputStreamWriter
指定的编码中,然后你就走了。但是,您需要注意您正在限制可以在文件中表示的字符范围。
找一个“作家”
作家做输出字符
OutputStream 做输出字节
您可以尝试使用其他编码。在这种情况下,您应该提供一个CharSetEncoder,因为它有一个onUnmappableCharacter方法
首先弄清楚chars
你要谈论的是哪一种。
在C
achar
中是八位,即使您需要两个或更多char
的 s 序列来表示一个字形,或者用人类术语来说,一个键入的字符。更糟糕的是,还有代表两个“键入”字符的字形,例如您在排版中经常看到的连体ff
字形ll
。
如果您在谈论C
char
s,那么根据定义,每个文件都包含与字符相同数量的字符。如果您正在谈论单词字符的任何其他含义,那么您需要做出一些选择。
UTF-8 中的 ASCII 字符集保证 8 位字符,这是迄今为止最好的字符集选择,因为它在 Web 协议中有明确的支持(感谢 w3c!)。这意味着只要您验证java
char
字符串中的 each 小于 128(整数值),您将得到一个byte
per char
with UTF-8
。
ISO-8859-1
是一个字符集,byte
每个字符也只使用一个。缺点ISO-8859-1
是它往往不是Microsoft 系统以外的任何东西的默认字符集。即使在微软领域内,也已经取得了很大进展。UTF-8
两者之间转换的成本并不算太高,但两者的可扩展性差异很大。基本上,如果你正在使用ISO-8859-1
并且有人告诉你下一个产品必须支持语言“X”,那么在某些情况下,你必须先转换为不同的字符集,然后再添加语言支持。在UTF-8
添加支持之前需要转换为另一个字符集的情况很少见。我的意思是非常罕见,非常罕见,以至于您应该考虑只使用图像,因为该语言可能已死,可能仅具有历史意义,并且可能已被记录为主要语言所在岛屿上较小部落的方言有全力支持。