写入磁盘文件不正确

时间:2011-03-11 00:54:18

标签: java

我想将数组的值写出来。

public void Write(String fileName) throws IOException
{

    PrintWriter outFile;
    outFile = new PrintWriter(new FileWriter(fileName));

    for(int K = 0 ; K < CurrentCount ; K++)
        outFile.println(List[K].toString());

    outFile.close();
}

输入文件的数据是:WeatherStation @ 1194a4e

WeatherStation类有我的构造函数和get和set方法

 List[K] = new WeatherStation(Location, Temp, Title, Air, Pollen);

我期待上面的所有属性都被放入文件中。

3 个答案:

答案 0 :(得分:3)

如果您希望这样,那么您需要覆盖toString课程的WeatherStation

默认是一个非常简单的输出类型和唯一ID(不确定它是一个地址还是哈希)。

只需添加一个toString方法,该方法遍历您班级的成员(您想要打印)并将它们连接成一个字符串。

此链接here就如何执行此操作提供了一个很好的示例。你会做类似的事情:

@Override public String toString() {
    StringBuilder result = new StringBuilder();

    result.append (this.getClass().getName() + " {");
    result.append (" Location=[" + this.Location + "]");
    result.append (", Temp=[" + this.Temp + "]");
    // Other fields.
    result.append (", Pollen=[" + this.Pollen + "]");
    result.append (" }");

    return result.toString();
  }

它未经测试,可能不是您想要的确切格式,但它应该是一个良好的开端。

答案 1 :(得分:1)

您需要覆盖toString()课程中的WeatherStation以生成所需的输出。

答案 2 :(得分:1)

简化你的生活!

  • a)初始化声明没有问题。
  • b)简化的for循环 - 简化。
  • c)如果您没有将原语或字符串传递给println,则会自动调用.toString()。

比较自己:

public void Write(String fileName) throws IOException
{
    PrintWriter outFile = new PrintWriter (new FileWriter (fileName));
    for (WheatherStation ws : List)
        outFile.println (ws);
    outFile.close();
}

并且 - 有没有人告诉你覆盖'toString'? ;)我同意。