用Java读取和操作文本文件

时间:2013-10-08 13:37:15

标签: java file integer int

我已经尝试了一段时间从.txt文件读取单个String,将其转换为Integer,添加新值并再次将其保存到.txt文件。

如果我只写“fw.write(String.valueOf(amount));”我已经半成功了。“到文件,但它只是用一个新值替换当前的String。我想获取文件中的当前String,将其转换为Integer并添加更多值。

我目前收到java.lang.NumberFormatException: null错误,但我转换为整数,所以我不明白。错误指向

content = Integer.parseInt(line);

//and

int tax = loadTax() + amount;

以下是我的两种方法

public void saveTax(int amount) throws NumberFormatException, IOException {
    int tax = loadTax() + amount;
    try {
        File file = new File("data/taxPot.txt");
        FileWriter fw = new FileWriter(file.getAbsoluteFile());

        fw.write(String.valueOf(tax));
        fw.close();

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



public int loadTax() throws NumberFormatException, IOException {

        BufferedReader br = new BufferedReader(new FileReader("data/taxPot.txt"));

        String line = br.readLine();
        int content = 0;

        while (line != null) {
            line = br.readLine();
            content = Integer.parseInt(line);
        }
            br.close();

            return content;
    }

任何人都可以看到为什么它返回null而不是添加tax + amount

2 个答案:

答案 0 :(得分:8)

在您阅读文件的最后一行后,br.readLine()将返回null,然后您将其传递给parseInt()
您无法解析null

答案 1 :(得分:1)

尝试交换:

if (line == null)
  return content;
do {
  content = Integer.parseInt(line);
  line = br.readLine();
} while (line != null);

这将修复line可能为null的问题。