最近写程序,发现在文件中输出整形数据时候会产生乱码。
程序的代码如下:package testFirst;import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;public class test {
public static void main(String[] args) throws IOException {
String src="d:/test.txt";
BufferedWriter filein=new BufferedWriter(new FileWriter(src));

int example=23224244;
filein.write(example); //在文件中输出整形数据时会乱码。

String example2="hello world!";
filein.write(example2); //在文件中输出字符串时就不会有乱码。

filein.close();
}
}我试过用DataOutputStream中的writeInt输出,但是仍然有乱码现象。
我想可能是编码问题,因为java输出默认的是Unicode编码,但是,我如果想在文件中输出整形数据该怎么做啊?

解决方案 »

  1.   


    FileInputStream fistream = new FileInputStream(fromPath);
    BufferedReader breader = new BufferedReader(new InputStreamReader(fistream, "unicode"));
    FileOutputStream fos = new FileOutputStream(textName, true);
    OutputStreamWriter output = new OutputStreamWriter(fos, "unicode");
    writer = new BufferedWriter(output);
      

  2.   

     int example=23224244;
            filein.write(String.valueOf(example));
      

  3.   

    你看看API中对于BufferedWriter的write(int c)解释—“Writes a single character"所以你写入的是这个参数整数对应的char而已,超过了128自然是乱码,如果你想写入整数,就这么做filein.write(example+"");因为你使用的是字符流    
      

  4.   

    谢谢,我在电脑上试的,能输出int类型了。
    不过我不怎么明白为什么在example后面加上个+“”就是输出字符流了,呵呵,刚接触java不久,还比较小白麻烦指点一下啊
      

  5.   


    是BufferedWriter本身就是字符流,你看名字是Writer或者Reader的都是处理字符的,字节流入1楼提到的以Stream结尾的FileInputStream等区别很多地方都说过,你站内搜索也可以找到很多讨论,这里就不多说了