DataOutputStream的乱码问题
2011-06-02 23:38 Rollen Holt 阅读(34044) 评论(0) 编辑 收藏 举报import java.io.*; public class Hello{ public static void main(String[] args){ try{ // 通过DataInputStream数据输入流把readme.txt中的内容读出来 // 通过DataOutputStream数据输出流把readme.txt的内容写入文件readme.out中 DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream("readme.out"),512)); BufferedReader in=new BufferedReader(new FileReader("readme.txt")); String s; while((s=in.readLine())!=null){ System.out.println(s); //1 源文件为readme.txt,里面的内容是中文和英文,可以显示(不是乱码) //2 要求通过OutputStream将readme.txt写入一个二进制文件(要求可以显示,不是乱码) // s为二进制代码,现在是无论转码与否s都是乱码 out.write(s.getBytes());//取得字符串对应的二进制码,然后再写入文件中 byte[] t; t="\n?0aA".getBytes(); for(int i=0;i<t.length;i++) { System.out.print(t[i]); //out.writeInt(t[i]);//把二进制代码写入文件中 } out.write(t);//把二进制代码写入文件中 out.write("subj哈哈\n".getBytes("gb2312"));//根据"gb2312"编码取得字符串的二进制码数组 } in.close(); out.flush(); out.close(); // 通过DataOutputStream数据输出流把浮点型、整型、真假型、字符型、字符串型写入文件sample.out中 /* 但是sample.out文件中的浮点型、整型、真假型乱码,因为存储的是二进制文件编码, * 用记事本打开看到的是相应的assca码值 * 如: * a对应的assca码为97 * 10:显示为换行 * 63: 显示为? * 48: 显示为0 * 97: 显示为a * 65: 显示为A */ double pi=3.1415; int i=10; boolean okay=true; char ch='J'; String s1="Java C 0 Pascal123123123 苏标记!"; FileOutputStream fsout=new FileOutputStream("sample.out"); DataOutputStream out1=new DataOutputStream(fsout); out1.writeDouble(pi); //向文件写入浮点型数据 out1.writeInt(i); //向文件写入整形数据 out1.writeBoolean(okay); //向文件写入booleen型数据 out1.writeChar(ch); //向文件写入字符型数据 out1.writeUTF(s1); //向文件写入字符串数据 out1.close(); // 通过DataInputStream数据输入流把浮点型、整型、真假型、字符型、字符串型从文件sample.out中读出来 FileInputStream fsin=new FileInputStream("sample.out"); DataInputStream in1=new DataInputStream(fsin); pi=in1.readDouble(); i=in1.readInt(); okay=in1.readBoolean(); ch=in1.readChar(); s1=in1.readUTF(); in1.close(); System.out.println("pi="+pi+", i="+i); System.out.println("okay="+okay+", ch="+ch); System.out.println("s="+s1); }catch(Exception e){ e.printStackTrace(); } } }
我在readme.txt中的内容为:renwenchao1111
输出的文件sample.out的内容乱码
eclipse对话框中的输出为:renwenchao1111
063489765pi=3.1415, i=10
okay=true, ch=Js=Java C 0 Pascal123123123 苏标记!
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================
![](http://service.t.sina.com.cn/widget/qmd/1882500857/8c17d4b5/1.png)