FileWriter,DataOutputStream,OutputStreamWriter和RandomAccessFile使用的字符编码

时间:2015-06-08 09:45:46

标签: java encoding stream

FileWriterDataOutputStreamOutputStreamWriterRandomAccessFile可以将字符数据写入基础流或文件,任何人都可以总结他们使用的默认字符编码,可以它们会被设置为使用除默认编码之外的其他编码吗?

2 个答案:

答案 0 :(得分:0)

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

只需阅读javadoc即可获得所有这些。

答案 1 :(得分:-1)

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

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

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

FileWriterOutputStreamWriter的子类,因此它会使用OutputStreamWriter使用的默认编码。

我希望这会有所帮助。