使用writeDouble会产生废话

时间:2014-08-17 21:50:37

标签: java

这个问题基本上是here讨论的扩展。我的目标是将两个格式化的列 x 和 y 数据写入文件(类型double)。我目前要做到这一点的尝试如下:

try {
  FileOutputStream fos = new FileOutputStream("angle.txt");
  DataOutputStream dos = new DataOutputStream(fos);
  for (i = 0; i < i_max-1; i = i + 1) {
    dos.writeDouble(theta[i]);
  }
  dos.close();
} catch (IOException error) {
  System.out.println("IOException: " + error);
}

此代码派生自找到的示例here(DataOutputStream)。由于对Java的掌握有限,我预计这只适用于一列;相反,它产生了这个:

?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™™™™™š?¹™...

我不明白我做错了什么。 您可以提供的任何见解都会有很大的帮助。

我的下一个问题是:如何格式化double类型的两个列,而不是格式("%1$16.6f, %2$16.6f", time[i], theta[i])。现在我正在进行this次讨论。但是,编译器不喜欢使用writeDouble

这种方法

非常感谢您的帮助和耐心。

2 个答案:

答案 0 :(得分:4)

Streams用于写入二进制数据。要编写文本数据,请使用Writers。请参阅Java IO教程:http://docs.oracle.com/javase/tutorial/essential/io/charstreams.html

答案 1 :(得分:0)

解决方案:

try {
  PrintWriter writer = new PrintWriter("angle.txt", "UTF-8");
  for (i = 1; i < i_max; i = i + 1) {
    writer.printf("%1$16.6f%2$16.6f%n", time[i], theta[i]);
  }
  writer.close();
} catch (IOException ioe) {
  System.out.println(ioe);
}