FileWriter、DataOutputStream、OutputStreamWriter和RandomAccessF



FileWriter, DataOutputStream, OutputStreamWriterRandomAccessFile可以将字符数据写入底层流或文件,谁能总结一下他们使用的默认字符编码是什么,是否可以设置为使用默认编码以外的其他编码?

  • FileWriter:使用默认编码
  • DataOutputStream:不写字符。写的字节。所以编码是无关紧要的。除了writeUTF(),它使用修改的UTF8编码(阅读文档了解更多细节)
  • OutputStreamWriter:使用作为参数传递给构造函数的编码
  • RandomAccessFile:不写字符写的字节。所以编码是无关紧要的。除了writeUTF(),它使用修改的UTF8编码(阅读文档了解更多细节)

所有这些都可以通过阅读javadoc获得。

对于OutputStreamWriter,如果没有指定字符集,它将从Charset.defaultCharset().name();获得默认的字符集(如果没有标识,将诉诸于使用UTF-8)。这是假设你正在运行一个Oracle Java JDK,其中类调用StreamEncoder.forOutputStreamWriter,这是一个sun包。

DataOutputStream写入字节,因此不需要编码。

RandomAccessFile读取和写入字节,因此不需要编码。

FileWriterOutputStreamWriter的子类,所以它将使用OutputStreamWriter使用的默认编码。

相关内容

  • 没有找到相关文章

最新更新