我有一个用于Android的Xamarin-Studio应用程序,我只想下载文件并在本地保存它们。但是,当我试图在files文件夹中创建一个文件时,我会得到一个异常:
File.Create("data/data/com.company.app/files/newFile.png");给我:
System.UnauthorizedAccessException
Access to the path 'data/data/com.company.app/files/newFile.png' is denied.我做错了什么?
发布于 2014-02-12 14:03:34
我终于意识到File.create()不是问题所在。我有这样的代码:
string tmpFilePath = FilesDir.AbsolutePath.stringByAppendingPath (f.Path);
Java.IO.File tmpFile = new Java.IO.File( tmpFilePath);
tmpFile.Mkdirs ();然而,Mkdirs()不仅创建了我假设的所有中间目录--而且还在文件路径本身创建了一个目录。因此无法创建该文件,因为已经有一个名称相同的目录。正确的方法是:
string tmpFile = FilesDir.AbsolutePath.stringByAppendingPath (f.Path);
Java.IO.File tmpParentFolder = new Java.IO.File(tmpFile).getParentFile();
tmpParentFolder.Mkdirs ();在我看来,FileExistsAndIsDirectory异常比UnauthorizedAccessException要有用得多。
发布于 2014-02-12 13:35:07
您应该使用环境或IsolatedStorage。例如:
var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var filename = Path.Combine(path, "newFile.png");发布于 2014-08-05 16:39:29
我正在用VS2013编写Xamarin的代码。使用我正在编写的应用程序创建的目录的访问被拒绝错误。我的应用程序通过以下连接创建一个名为/storage/emulated/0/POIApp的目录:
System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.Path, "POIApp");我发现我必须使用VS2013来编辑我的应用程序(POIApp)的“属性”,即右键单击解决方案资源管理器中的项目图标;从弹出菜单中选择属性。一个新的选项卡出现在主VS2013窗口中。左边有几个选项,例如,应用程序,Android清单,Android选项,构建等等。选择"Android宣言“。主面板底部是一个“必需的权限”部分。当我检查"READ_EXTERNAL_STORAGE“和"WRITE_EXTERNAL_STORAGE”时,我的问题就解决了。
https://stackoverflow.com/questions/21707138
复制相似问题