在模拟器模式下以“APPEND模式”写入文本文件,

时间:2012-01-01 07:47:23

标签: android file

在我的Android应用程序中,我应该将用户的数据存储在我在raw目录中创建的简单文本文件中。在此之后,我尝试使用Google示例中的简单代码在APPEND MODE中编写文件:

try 
{
    FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_APPEND);
    fos.write((nameArticle+"|"+indexArticle).getBytes());
    fos.close();    
} 
catch (FileNotFoundException e) 
{               
    e.printStackTrace();
} 
catch (IOException e) 
{
    e.printStackTrace();
}

但没有任何事情发生:没有例外,但除了我添加的单一记录之外,我在FILE_NAME中什么都看不见。

我做错了什么?是否可以共同在模拟器中写入文件?

1 个答案:

答案 0 :(得分:2)

openFileOutput只允许您打开与此Context的应用程序包关联的私有文件以进行编写。我不确定你要写的文件在哪里。我是指完整的道路。您可以使用以下代码写入位于任何位置的文件(只要您有烫发)。该示例使用外部存储,但您应该能够将其修改为在任何地方写入:

public Uri writeToExternalStoragePublic() {
    final String        filename        = mToolbar.GetTitle() + ".html"; 
    final String        packageName     = this.getPackageName();
    final String        folderpath      = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/" + packageName + "/files/";
    File                folder          = new File(folderpath);
    File                file            = null;
    FileOutputStream    fOut            = null;

    try {
        try {
            if (folder != null) {
                boolean exists = folder.exists();
                if (!exists) 
                    folder.mkdirs();                    
                file = new File(folder.toString(), filename);
                if (file != null) {
                    fOut = new FileOutputStream(file, false);
                    if (fOut != null) {
                        fOut.write(mCurrentReportHtml.getBytes());
                    }
                }
            }
        } catch (IOException e) {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        }
        return Uri.fromFile(file);
    } finally {
        if (fOut != null) {
            try {
                fOut.flush();
                fOut.close();
            } catch (IOException e) {
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }
    }
}

在您给出的示例中,尝试捕获'I0Exception`,我感觉您没有获得您尝试编写的权限。

祝新年快乐。