我已经阅读了大量有关写入Android设备内部存储的文章,我需要一些帮助来弄清楚我做错了什么。在我的应用程序的主要活动中,我从存储在内部存储器中的文件中读取了一个值,如下所示:
string ID = GetID();
GetID的位置如下:
string GetID()
{
try
{
using (var i = new StreamReader (OpenFileInput (FILENAME)))
{
return i.ReadToEnd();
}
}
catch
{
return "";
}
}
如果文件不存在,则返回“”并将用户发送到另一个活动进行注册。在该活动中,我使用它来调用函数来写入内部存储,如下所示:
WriteID (uniqueID);
WriteID的位置如下:
void WriteID(string uniqueID)
{
using (var o = new StreamWriter (
OpenFileOutput (FILENAME, FileCreationMode.Private)))
o.Write (uniqueID);
}
这对我来说很奇怪,如果我将这两个函数放在同一个活动中,写入文件然后调用函数来读取它,我会正确返回uniqueID。但是,如果我停止应用程序然后重新启动它,我会抛出一个File Not Found异常,并且读取函数没有返回任何内容。但是,如果我创建一个新项目并使用相同的代码,一切都按预期工作(文件被创建并写入,然后在重新启动数据时仍然存在)。
所以我想我有一些设置已经更改,或者我的原始应用程序中可能缺少某些引用,导致在应用程序停止时删除内部存储文件?
为什么这在我的测试应用中正常工作的想法,而不是在另一个?