【问题标题】:Writing a file to text with BufferedWriter(Writes something strange)Java使用 BufferedWriter 将文件写入文本(写一些奇怪的东西)Java
【发布时间】:2015-12-29 08:28:42
【问题描述】:

我尝试将一些整数写入文本文件,每行只输入一个值,所以我使用了 BufferedWriter。

try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
                          new FileOutputStream("filename.txt"), "utf-8"))) {
    writer.write(board.Player1.money);             
    writer.newLine();
    //Continues to do this for 4 players.
    writer.newLine();
    writer.write(board.Player1.position);
    writer.newLine();
    //Continues to do this for 4 players.
}

我希望在我的文本文件中看到整数。 board.Player1.money 这样的值是正确的,因为它们适用于代码的其他部分。所以我希望看到像 300 这样的值,但我在文本文件中看到以下几行。

Ǵ
ಀ
ಀ
ಀ

为什么会这样?

【问题讨论】:

  • 另外,您可以使用 StandardCharsets,它定义了 Charset 的常量,包括 UTF_8StandardCharsets.UTF_8

标签: java eclipse filewriter bufferedwriter


【解决方案1】:

另一种方法是:

writer.write(board.Player1.money+"");   

【讨论】:

  • 我正在和你同时写这个(swh)..但在这种情况下我们也应该使用 Integer.parseInt。我对此进行了测试,它的表现是正确的
【解决方案2】:

BufferedWriterwrite(...) 方法被重载。

例如:void write(String arg) 方法将给定的 String 写入文件,void write(int arg) 将给定的 Integer 转换为字符,然后将字符写入文件。

要解决你的问题,你必须改变

writer.write(board.Player1.position);

writer.write(Integer.toString(board.Player1.position));

【讨论】:

  • 这个解决方案没问题,但我有一个问题。当我将它保存为字符串时,它仍然会将一个整数值(在现实生活中)写入文件。所以当我尝试读回它时我可以直接将它放入一个整数数组还是在读取文件后使用 Integer.parseInt ?
  • 当你读回它时,你必须使用一些readLine() 方法。必须使用 Integer.parseInt(...)! 将生成的字符串解析为整数
【解决方案3】:

write(int c) with integer 需要一个字符。 考虑使用 write(String s, int off, int len),或者像 PrintWriter 这样的包装器

【讨论】:

  • 如果有人遇到同样的问题,他们可以使用这个解决方案似乎没问题,但我只想在每一行中保存一个 int 值。出于我的目的,我认为写 Integer.toString 更好,但这个答案也是有效的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多