FileWriter
, DataOutputStream
, OutputStreamWriter
和RandomAccessFile
可以将字符数据写入底层流或文件,谁能总结一下他们使用的默认字符编码是什么,是否可以设置为使用默认编码以外的其他编码?
- FileWriter:使用默认编码
- DataOutputStream:不写字符。写的字节。所以编码是无关紧要的。除了
writeUTF()
,它使用修改的UTF8编码(阅读文档了解更多细节) - OutputStreamWriter:使用作为参数传递给构造函数的编码
- RandomAccessFile:不写字符写的字节。所以编码是无关紧要的。除了
writeUTF()
,它使用修改的UTF8编码(阅读文档了解更多细节)
所有这些都可以通过阅读javadoc获得。
对于OutputStreamWriter
,如果没有指定字符集,它将从Charset.defaultCharset().name();
获得默认的字符集(如果没有标识,将诉诸于使用UTF-8
)。这是假设你正在运行一个Oracle Java JDK,其中类调用StreamEncoder.forOutputStreamWriter
,这是一个sun包。
DataOutputStream
写入字节,因此不需要编码。
RandomAccessFile
读取和写入字节,因此不需要编码。
FileWriter
是OutputStreamWriter
的子类,所以它将使用OutputStreamWriter
使用的默认编码。