java - Android - 写入文件时出错

标签 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);
    }

我一定错过了一些明显的东西。此代码不想向文件 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/

相关文章:

java - 在Android中,多部分实体是否也用于下载文件,因为我看不到该类的任何示例或详细描述

c++ - 使用 fscanf 从文件中读取字符

android - 无法压缩域。 Realm.getInstance 使我的应用程序在 LG G5 上崩溃

java - spring web framework中有没有具体的验证机制

java - 使用 sparql 查询向 Fuseki 插入数据

java - 从 BroadcastReceiver 对象访问类

android - 具有多个 mp3 文件问题的媒体播放器

java代码片段在打包成jar之前和之后读取文件

java - 如何避免 Java 中的 init 覆盖

java - 什么是 Spring Project Nature?