在Android文件系统中从我的应用程序中查找已保存的文件

时间:2016-03-01 17:32:35

标签: android xamarin cross-platform streamwriter xmlserializer

我使用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文件系统中找到它?或者,如果它在其他地方保存在哪里?

2 个答案:

答案 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);
                    }
                }
            }