我对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
中实现相同的目标?
答案 0 :(得分:1)
使用doubleToLongBits将double参数转换为long 类Double中的方法,然后将该long值写入 基础输出流为8字节数量,高字节优先。
由于DataOutputStream使用二进制格式进行写入,因此您会看到相同的内容。但是如果要使用DataInputStream和readDouble方法再次读取文件,则需要担心。它应该给你正确的价值。
答案 1 :(得分:1)
DataOutputStream.writeDouble
和DataOutputStream
的其他方法旨在以二进制格式编写数字。如果您希望以文本格式保存数据,请使用FileWriter
及其write(String)
方法。您可以使用double
将String
转换为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)。否则使用默认平台编码。
PrintWriter的println
添加换行符,print
没有。