首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Xamarin在Android上创建文件

无法使用Xamarin在Android上创建文件
EN

Stack Overflow用户
提问于 2014-02-11 16:15:00
回答 5查看 26.5K关注 0票数 11

我有一个用于Android的Xamarin-Studio应用程序,我只想下载文件并在本地保存它们。但是,当我试图在files文件夹中创建一个文件时,我会得到一个异常:

代码语言:javascript
复制
File.Create("data/data/com.company.app/files/newFile.png");

给我:

代码语言:javascript
复制
System.UnauthorizedAccessException
Access to the path 'data/data/com.company.app/files/newFile.png' is denied.

我做错了什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-02-12 14:03:34

我终于意识到File.create()不是问题所在。我有这样的代码:

代码语言:javascript
复制
string tmpFilePath = FilesDir.AbsolutePath.stringByAppendingPath (f.Path);
Java.IO.File tmpFile = new Java.IO.File( tmpFilePath);
tmpFile.Mkdirs ();

然而,Mkdirs()不仅创建了我假设的所有中间目录--而且还在文件路径本身创建了一个目录。因此无法创建该文件,因为已经有一个名称相同的目录。正确的方法是:

代码语言:javascript
复制
string tmpFile = FilesDir.AbsolutePath.stringByAppendingPath (f.Path);
Java.IO.File tmpParentFolder = new Java.IO.File(tmpFile).getParentFile();
tmpParentFolder.Mkdirs ();

在我看来,FileExistsAndIsDirectory异常比UnauthorizedAccessException要有用得多。

票数 2
EN

Stack Overflow用户

发布于 2014-02-12 13:35:07

您应该使用环境或IsolatedStorage。例如:

代码语言:javascript
复制
var path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var filename = Path.Combine(path, "newFile.png");
票数 16
EN

Stack Overflow用户

发布于 2014-08-05 16:39:29

我正在用VS2013编写Xamarin的代码。使用我正在编写的应用程序创建的目录的访问被拒绝错误。我的应用程序通过以下连接创建一个名为/storage/emulated/0/POIApp的目录:

代码语言:javascript
复制
System.IO.Path.Combine(Android.OS.Environment.ExternalStorageDirectory.Path, "POIApp");

我发现我必须使用VS2013来编辑我的应用程序(POIApp)的“属性”,即右键单击解决方案资源管理器中的项目图标;从弹出菜单中选择属性。一个新的选项卡出现在主VS2013窗口中。左边有几个选项,例如,应用程序,Android清单,Android选项,构建等等。选择"Android宣言“。主面板底部是一个“必需的权限”部分。当我检查"READ_EXTERNAL_STORAGE“和"WRITE_EXTERNAL_STORAGE”时,我的问题就解决了。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21707138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档