日期:2014-05-20  浏览次数:20788 次

关于bufferedOutputStream的问题
import java.io.*;

public class IO 
{

public static void main(String[] args) throws IOException 
{

BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream("C:\\Users\\yafee\\Desktop\\temp.txt"));

byte[] data="Hello,我是乔布斯".getBytes();

for (int i = 0; i < data.length; i++) {
System.out.print(data[i]);
}

out.write(data);
out.close();
}
}

控制台的结果为:
72101108108111-93-84-50-46-54-57-57-57-78-68-53-71

我有一点搞不懂:
我本来是把“Hello,我是乔布斯”这个字符串转化为字节数组,存在temp.txt这个文件中,所以temp.txt文件里存的应该是“72101108108111-93-84-50-46-54-57-57-57-78-68-53-71”(因为我通过for循环在控制台打印出来的就是“72101108108111-93-84-50-46-54-57-57-57-78-68-53-71”),但是为什么现在temp.txt文件里的内容是“Hello,我是乔布斯”呢???


------解决方案--------------------
你用记事本打开的文件,看到的内容被“记事本”这个编辑软件根据编码格式解释后的了

记事本有具有这个智能功能,可以识别utf-8,ansi....等等格式的文件

那些中文符号,在内存中由多个字节组合而成 

你打开的是gbk编码格式的文件,此时,2个字节足以表示一个中文字符