我有一段代码没有按我想要的方式工作。
deleteFile(mealFile);
//TODO: Error
try{
FileOutputStream fos = openFileOutput(mealFile, MODE_APPEND);
OutputStreamWriter osw = new OutputStreamWriter(fos);
for(int i=0; i<temp_name.size(); i++){
if(!(temp_name.get(i).equals(mealName.getText().toString()))){
osw.append(temp_name.get(i) + "\t");
osw.append(temp_meals.get(i) + "\t");
osw.append(temp_scale.get(i) + "\t");
System.getProperty("line.separator");
}
}
}catch(Exception e){
updateWarningMessage(6);
}
我一定错过了一些明显的东西。此代码不想向文件 append 任何内容。我知道代码没有失败(没有异常(exception)),我知道我尝试 append 的 ArrayList 不是空的并且包含字符串(我什至尝试过仅使用“osw.append("test");”但没有运气)。我知道 for 循环运行了预期的次数,并且正如我所说,我知道“if”正在起作用。起初,我认为这是文件删除或其他方面的延迟,但我尝试添加一个方法,在DeleteFile()之后直接将文本写入该文件,并且这部分起作用了..而且,此代码仍然没有 append 任何内容.
有人知道哪里出了问题吗?我完全迷失了,我用来 append 的另一种方法看起来有些相同。我现在要尝试将 ArrayList 传递给一个新方法,并尝试从那里添加它,但我不喜欢让这种奇怪的行为悬而未决。我希望我只是错过了整天编码中明显的东西。有人能发现什么吗?
最佳答案
我会在每次迭代后flush()
,并在完成后close()
流,因为这是处理文件时的通常过程。
try{
FileOutputStream fos = openFileOutput(mealFile, MODE_APPEND);
OutputStreamWriter osw = new OutputStreamWriter(fos);
for(int i=0; i<temp_name.size(); i++){
if(!(temp_name.get(i).equals(mealName.getText().toString()))){
osw.append(temp_name.get(i) + "\t");
osw.append(temp_meals.get(i) + "\t");
osw.append(temp_scale.get(i) + "\t");
System.getProperty("line.separator");
osw.flush();
}
}
osw.close();
}catch(Exception e){
updateWarningMessage(6);
}
关于java - Android - 写入文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23254850/