代码很简单:
import java.io.*;
public class Myjava{
   public static void main(String args[]){
       try{
        FileOutputStream fos = new FileOutputStream("D:\\123.txt");
        DataOutputStream dos = new DataOutputStream(fos);
        dos.writeDouble(3.1415926575);
       }catch(Exception e){}
       System.out.println("可以了");
   }
}运行完之后,123.txt文件的内容为什么是乱码啊?怎么才能正常显示?

解决方案 »

  1.   

    不明白就好好看看java api嘛
    void writeDouble(double v) throws IOException
    将一个 double 值写入输出流,该值由八个字节组成。实现这一点的方式是:首先使用与 Double.doubleToLongBits 方法相同的方式将此 double 值转换为一个 long 值,然后使用与 writeLong 方法完全相同的方式写入该 long 值。此方法写入的字节可由 DataInput 接口的 readDouble 方法读取,然后该方法将返回一个等于 v 的 double 值。这样输入进去肯定就是乱码了撒你可以把double转成String再输入就好了
    import java.io.*;
    public class Myjava{
      public static void main(String args[]){
      try{
      Double a = 3.1415926575;
      FileOutputStream fos = new FileOutputStream("D:\\123.txt");
      DataOutputStream dos = new DataOutputStream(fos);
      dos.writeBytes(a.toString());
      //dos.writeDouble(3.1415926575);
      }catch(Exception e){}
      System.out.println("可以了");
      }
    }
      

  2.   

    注意字节流和字符流的输出,writeDouble是把double类型按字节输出
    PrintStream ps = new PrintStream(new FileOutputStream("D:\\123.txt"));
    ps.println(3.1415926575);
    ps.close();