问题描述
- 不能在文件中写入新的行
-
我想把一串字符串写入一个文件中:private void writeScoreToFile(BlastScore result) { try{ FileWriter fstream = new FileWriter(getFilesDir() + CaptureActivity.BLAST_SCORES,true); BufferedWriter out = new BufferedWriter(fstream); out.write(Integer.toString(result.getBlastScore())); out.close(); }catch (Exception e){ System.err.println("Write Error: " + e.getMessage()); } }
我想把它再作为一个列表读出来。
private List<String> getArrayFromFile(String filename) throws IOException { FileReader fileReader = new FileReader(getFilesDir() + filename); BufferedReader bufferedReader = new BufferedReader(fileReader); List<String> lines = new ArrayList<String>(); String line = null; while ((line = bufferedReader.readLine()) != null) { lines.add(line); } bufferedReader.close(); return lines; }
写入列表中的是:
100 96 100 96 100
打印出的列表却是这样的:
02-26 21:22:31.130: I/System.out(936): Last Score: 1009610096100
打印列表用的是下面的代码:
try { List<String> blastScores = getArrayFromFile(CaptureActivity.BLAST_SCORES); System.out.println("Last Score: " + blastScores.get(blastScores.size()-1)); } catch (IOException e) { // TODO Auto-generated catch block System.err.println("Read Error: " + e.getMessage()); }
请求大家帮忙改正,谢谢。
解决方案
当你输入的是整型或整型字符串,每次输出后,你没有输入一个新的行。因此,你的文件中只有一行数据,就是你作为一个连续字符串的那行。
所以作为修复,在单独的 write() 调用中,添加像 write.newLine() 一行分隔符。
解决方案二:
在 writeScoreToFile
函数中没有看见新的行,或者任何类型的分隔符,可以单独区分写入的分数。
既然那样的话,你的文件在一行中应该包含 1009610096100
, getArrayFromFile 中的循环只会被执行一次
while ((line = bufferedReader.readLine()) != null) {
lines.add(line);
}
因此 List 只包含一个元素,代码 blastScores.get(blastScores.size()-1)将会得到最后的唯一的元素,就是1009610096100
。
时间: 2024-08-31 02:05:34