为什么通过FileOutputStream写入文件里面的数值为乱码!

import java.io.*; public class shizhang { public static void main(String[] args) throws IOException {char ch; char q='\n'; InputStreamReader iin=new InputStreamReader (System.in); BufferedReader bin=new BufferedReader (iin); File file1=new File ("c:\\Program Files\\Java\\jdk1.6.0_18\\example\\newFile.txt"); try { FileOutputStream fout=new FileOutputStream(file1); DataOutputStream dout=new DataOutputStream(fout); while(true) { System.out.println("输入名字"); ch=(char) System.in.read(); if(ch==' ') break; while(ch!='\n') {fout.write(ch); ch=(char) System.in.read(); } System.out.println("输入学号"); int i=Integer.parseInt (bin.readLine()); System.out.println("输入成绩"); float f=Float.parseFloat(bin.readLine()); dout.writeInt(i); dout.writeFloat(f); dout.write(q); } dout.close(); } catch(FileNotFoundException e) {System.out.println(e);} catch(IOException e) { System.out.println(e); } } 我做的题·说的是从键盘输入名字,学号 成绩。重复操作,知道输入空字符为止我输入输入名字 wanggang 输入学号 25 输入成绩 23 输入名字 yaochun 输入学号 50 输入成绩 23 输入名字 lizhiqiang 输入学号 34 输入成绩 25 输入名字 在记事本中显示的为什么是wanggang A yaochun 2A lizhiqiang "A 的一些乱码而且没有换行这些乱码是咋回事? 要是我从这个文件中 读出各学生成绩·应该这么写? }

同学,你用的是
字节
流InputStreamReader
iin=new
InputStreamReader
(System.in);,这个字节流对接到了
键盘
的输入,你要知道,字节流,只能一个字节一个字节的读数据,而
字符
是两个字节,这样一读,读取的Unicode就有可能是错的,所以在
记事本
里显示就不正常。。。所以一般都会加一个处理流在字节流上,这样就可以两个字节两个字节的读数据了,你也可以用转换流,将字节流转换成字符流,但是注意貌似没有字符流转成字节流哟!!!
温馨提示:答案为网友推荐,仅供参考
相似回答