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

Finding a saved file from my app in the Android file system

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

您应该使用 ContextWrapper 中的 FilesDir

Path.Combine(FilesDir.Path , "MyFile.text");

例如,将资产文件夹中的文件复制到本地文件系统

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);
                    }
                }
            }
  /data/data/com.domain.myapp/files/AppData.txt

那是私人内存。私有,因为只有您的应用可以访问。

您的应用可以使用 getFilesDir() 访问它。

ES File Explorer 等其他应用无法访问。