Android - 写入文件时出错

时间:2014-04-23 20:46:41

标签: java android file append

我有一段代码无法正常工作。

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传递给一个新方法并尝试从那里添加它,但我不喜欢让这种奇怪的行为未解决。我希望我错过了整天编码中显而易见的事情。谁能发现任何东西?

2 个答案:

答案 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);
    }
相关问题