Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在“中写入文本文件”;附加模式";在模拟器模式下,_Android_File - Fatal编程技术网

Android 在“中写入文本文件”;附加模式";在模拟器模式下,

Android 在“中写入文本文件”;附加模式";在模拟器模式下,,android,file,Android,File,在我的Android应用程序中,我应该将来自用户的数据存储在我在原始目录中创建的简单文本文件中。在此之后,我尝试使用Google示例中的简单代码,以追加模式编写文件: try { FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_APPEND); fos.write((nameArticle+"|"+indexArticle).getBytes()); fos.close(); } ca

在我的Android应用程序中,我应该将来自用户的数据存储在我在原始目录中创建的简单文本文件中。在此之后,我尝试使用Google示例中的简单代码,以
追加模式编写文件:

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();
}
但是什么也没有发生:没有例外,但是除了我添加的单个记录之外,我在我的
文件名
中什么也看不到


我做错了什么?可以在emulator中写入文件吗?

openFileOutput
只允许您打开与此上下文的应用程序包关联的私有文件进行写入。我不确定您试图写入的文件的位置。我是说完整的路径。您可以使用下面的代码写入任何位置的文件(只要您有烫发)。该示例使用外部存储器,但您应该能够将其修改为在任意位置写入:

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”,我感觉您在尝试编写的地方没有权限


祝你新年快乐。

我不知道你的意思是什么?您提到您看到了您添加的单个报告。你还需要什么?该文件是预先存在的吗?你的意思是你的内容会抹去预先存在的数据吗?对不起(还有拼写错误-新年之夜),我必须更清楚一点-我的文件raw\bookmarks.txt中有一条记录,我想在其中添加新行。应该保留旧记录。在运行时无法编辑资源文件。这是否意味着无法在txt文件中写入文件中的新行?或者我应该在另一个地方创建文件?在资产?是的,很有效,非常感谢!但我真的不明白你的代码和我的代码之间的区别,除了检查存在的文件夹和文件…我应该分析,似乎是。你打算将数据存储为内部存储器吗?我的文件很小,所以不需要使用外部存储。要做到这一点,我必须在folderpath中使用类似于raw\text.txt?AFAIK
openFileOutput
的东西在内部存储中创建文件,但我不允许我们指定创建文件的位置。我们可以使用
getFilesDir
获取创建文件的文件夹的完整路径,或者使用
getFileStreamPath
获取文件的完整路径。如果在文件名中添加了一个文件夹,如
raw\text.txt
,我不确定为什么代码片段可能不起作用。尝试删除文件夹组件
raw
,请参阅。顺便说一句,我认为这些文件是在
data/data/com.yourpackage
中创建的。