【问题标题】:Writing an Integer in file with BufferedWriter [duplicate]使用 BufferedWriter 在文件中写入整数 [重复]
【发布时间】:2020-02-17 15:25:13
【问题描述】:

我有一种写文件的方法,但不知怎么写int 时出现问题:

public static void writeFile(int[] result) {
    try {
        FileWriter writer = new FileWriter("MyFileExample.txt", true);
        BufferedWriter bufferedWriter = new BufferedWriter(writer);

        int counter = 0;
        for (int j = 0; j < result.length; j++) {
            if (result[j] != -1) {
                counter++;
            }
        }
        System.out.println(counter);


        bufferedWriter.write(counter);

        bufferedWriter.newLine();

        for(int i = 0; i<result.length; i++) {
            if (result[i] != -1) {
                bufferedWriter.write(i + " ");
            }
        }






        bufferedWriter.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

bufferedWriter.write(counter); 行没有写任何东西。只是一个空白。其余的写得很好。我尝试写"test" 而不是counter,这也很好。

知道如何解决这个问题吗?

【问题讨论】:

  • 请注意,BufferedWriter#write(int)(继承自Writer#write(int))用于编写单个字符,而不是整数
  • 那我该如何解决呢?
  • 试试write(Integer.toString(counter))
  • 工作完美,谢谢!

标签: java integer filewriter bufferedwriter


【解决方案1】:

发生了什么,当您编写 int 而不将其转换为 String is 时,它只是将 int 写为它的类型(一个 int)。因此调用该方法,例如如下:

writeFile(new int[] {1, 2, 3})

将以下字节写入文件:

03 00 01 02

如果您参考 ASCII 表,它们都是不可打印的字符。

根据您要编写的文件类型,我假设您希望将整数写入为字符串。所以你在写之前做了正确的转换。

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 2015-07-30
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多