我使用XmlSerializer和StreamWriter创建了一个新文件来保存数据。从我使用我的应用程序进行的测试,使用此方法存储和恢复数据正在运行。出于好奇,我试图找到在Android文件系统中创建的文件,但没有成功。我试图通过Android应用程序(ES文件资源管理器)和桌面应用程序(在Mac上,Android文件传输)找到它。在这两种情况下,我都无法找到创建的文件。
XmlSerializer xmlSerializer = new XmlSerializer (typeof(GAData));
TextWriter writer = new StreamWriter (FilePath);
xmlSerializer.Serialize (writer, this);
writer.Close ();
Console.WriteLine ("Data saved");
在此处定义FilePath:
// Determining the path
var documentsPath = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
FilePath = Path.Combine (documentsPath, "AppData.txt");
Console.WriteLine (Path.GetFullPath (FilePath));
最后一次Console.WriteLine正在记录:/data/data/com.domain.myapp/files/AppData.txt
完全相同的代码就像iOS上的魅力一样,我可以使用Mac上的应用程序在文件系统中查看该文件。为什么我可以在Android文件系统中找到它?或者,如果它在其他地方保存在哪里?
答案 0 :(得分:1)
DEMO.DAT -- DEMO02.DAT -- DEMO04.DAT -- DEMO06.DAT
那是私人内存。私密,因为只有您的应用可以访问。
您的应用可以使用 /data/data/com.domain.myapp/files/AppData.txt
。
其他应用程序(如ES文件浏览器)无法访问。
答案 1 :(得分:0)
您应该使用ContextWrapper中的FilesDir
Path.Combine(FilesDir.Path , "MyFile.text");
示例,将assets文件夹中的文件复制到本地文件系统
if (!File.Exists(Path.Combine(FilesDir.Path , "myFile.Text")))
{
using (var asset = Assets.Open("TextToCopyTo.txt"))
{
using (var dest = File.Create(Path.Combine(FilesDir.Path , "MyFile.text")))
{
asset.CopyTo(dest);
}
}
}