我已经尝试了一段时间从.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
?
答案 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的问题。