我有一段代码无法正常工作。
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);
}
必须有一些明显的东西我错过了。此代码不希望向文件追加任何内容。我知道代码没有失败(没有异常),我知道我试图追加的ArrayLists不是空的并且包含字符串(我甚至尝试过&#34; osw.append(&#34; test&#34; );&#34;没有运气)。我知道for循环运行的次数和预期的一样多,正如我所说,我知道&#34; if&#34;工作中。起初,我虽然是文件删除延迟或其他什么,但我尝试添加一个方法,直接在DeleteFile()之后将文本写入此文件,这部分工作..但仍然,此代码不附加任何东西
有谁有任何线索可能有什么不对?我完全输了,我用来追加的另一种方法看起来有点相同。我现在要尝试将ArrayLists传递给一个新方法并尝试从那里添加它,但我不喜欢让这种奇怪的行为未解决。我希望我错过了整天编码中显而易见的事情。谁能发现任何东西?
答案 0 :(得分:0)
可能是在您的清单中,您忘记将书写添加到外部存储空间
<强>解决方案:强>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 1 :(得分:0)
我会在每次迭代后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);
}