黑马程序员技术交流社区

标题: FileWriter字符流为什么不能指定字符编码 [打印本页]

作者: 吴硕    时间: 2012-10-31 21:51
标题: FileWriter字符流为什么不能指定字符编码
本帖最后由 吴硕 于 2012-11-1 17:31 编辑
  1. import java.io.*;

  2. class FileWriterDemo
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 FileWriter fw = new FileWriter("r:/demo.txt");        //1
  7.                 fw.write("你好");
  8.                 fw.close();
  9.         }
  10. }
复制代码
同样是写入文件,为什么转换流可以指定字符编码,而FileWriter流却不可以在1处指定字符编码

转换流可以
  1. import java.io.*;

  2. class Demo
  3. {
  4.         public static void main(String[] args) throws IOException
  5.         {
  6.                 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("demo.txt"), "utf-8");
  7.                 osw.write("你好");
  8.                 osw.close();
  9.         }
  10. }
复制代码

作者: 邓艳秋    时间: 2012-10-31 22:41
用我这边的角度来看,可能是每个方法的重载不一样。
作者: 王晓州    时间: 2012-11-1 00:47
字节是基本单位,而字节流更是直接操作字节的。转换流之所以构造的时候可以指定编码,我想是因为他在构造的时候除了接收字符集外,还同时接收了一个字节流。

作者: 古银平    时间: 2012-11-1 07:50
转换流接受的是字节流,要把字节流转成字符流是要指定字符编码的,如果不指定那么默认的是系统指定的字符编码,这只存在于转换流当中,字符流已经是按某一种编码方式编好的字符了,要是指定字符编码那可定会出现乱吗的。
也就是只有字节流与字符流转换时才涉及到字符编码,默认GBK编码,也可以指定,每种编码的方式都不一样的,编解码不一样就会出现不一样的结果。
作者: 吴硕    时间: 2012-11-1 17:30
古银平 发表于 2012-11-1 07:50
转换流接受的是字节流,要把字节流转成字符流是要指定字符编码的,如果不指定那么默认的是系统指定的字符编 ...

明白了,谢谢版主




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2