在我的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
中什么都看不见。
我做错了什么?是否可以共同在模拟器中写入文件?
答案 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`,我感觉您没有获得您尝试编写的权限。
祝新年快乐。