用户可访问的文件夹/文件在xamarin.forms中

时间:2016-03-08 11:59:13

标签: c# xamarin.forms

我使用System.Environment.SpecialFolder.Personal来创建文件并读取/写入该文件。

参考: Working with files

它可以正常工作,因为我可以从我的应用程序中的文件中读取。但我无法从我的Android设备中找到或浏览该文件。

我想在其中创建一个应该可供用户访问的文件夹和文件。应允许用户浏览该文件。我怎样才能在xamarin.forms中实现这个目标?

3 个答案:

答案 0 :(得分:2)

上传android:

的外部存储空间中的文件
var documentsPath = Android.OS.Environment.ExternalStorageDirectory.ToString();
var filePath = Path.Combine(documentsPath, "test.txt");
System.IO.File.WriteAllText (filePath, "Om Sai Ram");

添加以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

要创建新文件夹:

var dir =  new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/Sample/");
    if (!dir.Exists ())
        dir.Mkdirs ();
    if(dir.Exists())
        dir.Delete();

答案 1 :(得分:0)

我一直在研究这个问题,我不确定它是否可以在Forms中完成,除非你在那里有一些特定于平台的代码。您以前的答案仅与Android有关(即使您明确询问了表格)。这是我到目前为止发现的......

有一个PCLStorage NuGet包,允许您在PCL中进行文件操作。我成功地使用了这个......

问题是文件不是用户可访问的。根据doco,我最初尝试过“IFolder RootFolder = FileSystem.Current.LocalStorage;”。我已经阅读过如果您使用外部存储(实际上不一定是外部存储,但对您的主文件夹是“外部”)然后它是用户可访问的,并且通过intellisense我发现有一个RoamingStorage选项。我试过这个,它在UWP中工作,但是在Android上遇到了一个未处理的异常,所以我不知道如何解决这种情况(除了深入探讨特定于平台的代码,首先使用PCLStorage失败了)。

我也一直在关注Dropbox以解决这个问题,但是我仍然不确定如何实现它。我还没有找到关于这个主题的任何体面的教程,并且试图从片段中找出解决方法很困难。

答案 2 :(得分:0)

我实际上现在有一个解决方案(有点)。我还没有设法使Dropbox工作(Xamarin正在开发一个新的Dropbox nuget包),但是我能够通过使用Xamarin.Plugin.Filepicker nuget包加载外部文件(确保你使用那个特定的一个,因为其他几个人也不能工作,而且这个开始时工作起来并不好!)。我使用Android和UWP(我发现这个解决方案,因为MicroSoft现在建议使用文件选择器来访问外部文件)。我还没有尝试过iOS。

注意:您无法写入该文件,但您可以从用户编辑它的位置导入该文件进行处理。另请注意,tostring()不起作用 - 它只返回ASCII代码,因此您必须显式地将结果转换为char。数据以数组形式返回,而不是作为流返回。

我相信也可以写入文件,但是你必须自己编写 - 目前没有可用的软件包。请参阅https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/dependency-service/以帮助您入门。