哪个Environment.SpecialFolder.XXX将给我Context.getFilesDir()?

时间:2018-11-08 11:56:56

标签: xamarin xamarin.forms xamarin.android

我想访问一个文件夹,我可以在其中保存临时文件并在其中写入文件,并且我不需要权限即可写入该文件夹。

我目前正在使用:

string targetBaseDir = Environment.GetFolderPath(
    Environment.SpecialFolder.Personal,
    Environment.SpecialFolderOption.Create
    );

这为我提供了一个私有目录,该目录不需要权限,该目录是与Context.getFilesDir()对应的目录,但是由于我不需要文件永久存在,因此如果可以将它们保存在其中,它将更加干净。与Context.getFilesDir()对应的目录。要获取目录,我需要写些什么而不是.Personal

2 个答案:

答案 0 :(得分:0)

您可以通过.NetStd库中的FileSystem.AppDataDirectory使用Xamarin.Essentials来获取Android上的“ getFilesDir()”位置。

示例:

var appData = Xamarin.Essentials.FileSystem.AppDataDirectory;

appData等于/data/user/0/com.sushihangover.FormsTestSuite/files

还有Android FilesDir

Log.Debug("SO", FilesDir.ToString() );

等于/data/user/0/com.sushihangover.FormsTestSuite/files

  

访问一个我可以在其中保存临时文件的文件夹

在这种情况下,请使用缓存目录:

var cacheDir = Xamarin.Essentials.FileSystem.CacheDirectory;

cacheDir等于:`/data/user/0/com.sushihangover.FormsTestSuite/cache

re:https://docs.microsoft.com/en-us/xamarin/essentials/

答案 1 :(得分:0)

Environment.SpecialFolder.PersonalEnvironment.SpecialFolder.MyDocuments都将为您提供Context.getFilesDir()的路径。

但是,如果要保存小的临时文件,则可以使用缓存目录Context.getCacheDir()

不过,缓存目录没有特殊的文件夹枚举。您必须从当前上下文Context.CacheDir.Path或从Xamarin.Essentials.FileSystem.CacheDirectory获取路径,如果您使用Xamarin.Essentials API。

了解更多:
File access with Xamarin.Android with SpecialFolder
Writing cache file in internal storage
File system helpers in Xamarin.Essentials