不工作的I / O方法

时间:2013-07-12 09:30:17

标签: java file-io io

我对JAVA很陌生,所以我不会在以下方法中看到我做错了什么:

public void writeWNDFile(){
        String strFilePath = "C:/Users/fperrone/Desktop/ddd.txt";
        try
        {
          //create FileOutputStream object
          FileOutputStream fos = new FileOutputStream(strFilePath);

           DataOutputStream dos = new DataOutputStream(fos);
           dos.writeDouble(12);            
           dos.close();
        }
        catch (IOException e)
        {
          System.out.println("IOException : " + e);
        }
    }

实际上是生成了文件,但我没有得到12作为打印和预期的结果,而是@(,这可能是ASCII表示。

你可以解释一下吗?

修改

最终是否存在与JAVA MATLAB函数类似的fwrite函数?我其实想写一个二进制文件。在MATLAB中,我只是在呼唤:

fwrite(filename, A, precision)

我怎样才能在JAVA中实现相同的目标?

3 个答案:

答案 0 :(得分:1)

来自writeDouble java docs

  

使用doubleToLongBits将double参数转换为long   类Double中的方法,然后将该long值写入   基础输出流为8字节数量,高字节优先。

由于DataOutputStream使用二进制格式进行写入,因此您会看到相同的内容。但是如果要使用DataInputStream和readDouble方法再次读取文件,则需要担心。它应该给你正确的价值。

答案 1 :(得分:1)

DataOutputStream.writeDoubleDataOutputStream的其他方法旨在以二进制格式编写数字。如果您希望以文本格式保存数据,请使用FileWriter及其write(String)方法。您可以使用doubleString转换为Double.toString(double)

答案 2 :(得分:0)

  //PrintWriter out = new PrintWriter(new BufferedWriter(
  //    new OuputStreamWriter(new FileOutputStream(strFilePath) /*, "UTF-8"*/)));
  PrintWriter out = new PrintWriter(strFilePath /*, "UTF-8"*/);
  out.println(12);
  out.close();

如果希望应用程序在任何地方使用相同的编码进行编写,请添加编码(此处为UTF-8)。否则使用默认平台编码。

PrintWriterprintln添加换行符,print没有。