【问题标题】:Android - Error in writing to fileAndroid - 写入文件时出错
【发布时间】:2014-06-08 21:49:03
【问题描述】:

我有一段代码没有按我的意愿工作。

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 不是空的并且包含字符串(我什至只尝试过“osw.append("test");" 没有运气)。我知道 for 循环运行的次数与预期的一样多,并且正如我所说的,我知道“if”正在运行。起初,我虽然是文件删除延迟或什么的,但我尝试添加一个方法,在 DeleteFile() 之后直接将文本写入该文件,这部分工作..而且,这段代码没有附加任何东西.

有没有人知道什么是错的?我完全迷路了,我用来追加的另一种方法看起来有些相同。我现在要尝试将 ArrayLists 传递给一个新方法并尝试从那里添加它,但我不喜欢让这种奇怪的行为未解决。我希望我只是错过了整天编码的一些明显的东西。有人能发现什么吗?

【问题讨论】:

    标签: java android file append


    【解决方案1】:

    我会在每次迭代后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);
        }
    

    【讨论】:

    • 耶,这行得通!猜猜我得看看这两个人到底做了什么。所以它是写入文件的刷新,而不是追加?我可以自己查一下,非常感谢:)
    • 你的想法是对的。在调用 flush()close() 之前,没有什么是最终的(close() 调用 flush() 然后实际上关闭了流,这也很重要)。
    【解决方案2】:

    可能是您在清单中忘记将写入添加到外部存储

    解决方案:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    

    【讨论】:

    • 我的错误是 A-Cs 的建议,但还是非常感谢您的回复 :)
    猜你喜欢
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多