尝试从iOS 8模拟器中运行的应用程序本地保存文件,并且我不断获取访问被拒绝的异常。
在之前的应用中,我使用以下代码来获取有效的文件路径:
Environment.GetFolderPath(Environment.SpecialFolder.Personal)
或
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
但我已经读过iOS 8,现在必须写成:
NSFileManager.DefaultManager.GetUrls(NSSearchPathDirectory.DocumentDirectory,
NSSearchPathDomain.User)[0]
所以我使用以下代码生成.txt
文件的文件路径,并在尝试使用它时保存时接收访问被拒绝的异常:
public void SaveMyFile(string content)
{
NSUrl[] urls;
string filePath;
//
urls = NSFileManager.DefaultManager.GetUrls(NSSearchPathDirectory.DocumentDirectory,
NSSearchPathDomain.User);
filePath = Path.Combine(urls[0].Path, "MyApp", "myFile.txt");
File.WriteAllText(filePath, content);
}
因此,它给我的文件路径也拒绝访问/Users/Idox/Library/Developer/CoreSimulator/Devices/92498E38-7D50-4081-8A64-83061DC00A86/data/Containers/Data/Application/C35B3E98-C9E3-4ABA-AA7F-CD8419FA0EA5/Documents/MyApp/myFile.txt
。
我想知道是否需要切换某些设置以使应用程序对此目录具有写入权限,或者目录本身是否无效。
我还调用Directory.Exists(string path)
来检查目录是否在那里,是不是。
答案 0 :(得分:1)
您错过了Path
urls[0].Path
媒体资源
filePath = Path.Combine(urls[0].Path, "MyApp", "myFile.txt");
答案 1 :(得分:1)
这已在Xamarin.iOS 8.4中修复,因此,如果您使用的是最新版本的Xamarin,则可以毫无问题地使用Environment.GetFolderPath
(如果您希望跨平台共享代码,这将非常有用)。