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