繁体   English   中英

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

[英]User accessible folder/file in xamarin.forms

我已经使用System.Environment.SpecialFolder.Personal创建了一个文件并对该文件进行读/写操作。

参考: 处理文件

我可以从我的应用程序中的文件中读取该文件。 但是我无法从Android设备上找到或浏览到该文件。

我想在其中创建一个文件夹和文件,用户应该可以访问它。 应该允许用户浏览该文件。 如何在xamarin.forms中实现此目的?

要将文件上传到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();

我一直在研究此方法,但不确定是否可以在Forms中完成,除非您也有一些特定于平台的代码。 您先前的答案仅与Android有关(即使您明确询问了Forms)。 到目前为止,这是我发现的...

有一个PCLStorage NuGet软件包,它允许您在PCL中执行文件操作。 我已经成功使用了...

问题是文件不能由用户访问。 按照doco,我最初尝试“ IFolder RootFolder = FileSystem.Current.LocalStorage;”。 我已经阅读过,如果您使用外部存储(实际上不一定是外部存储,而是在主文件夹“外部”),那么它是用户可访问的,并且通过智能感知,我发现有RoamingStorage选项。 我尝试过,它可以在UWP中工作,但是在Android上出现了一个未处理的异常,所以我不确定如何解决这种情况(除了研究特定于平台的代码外,首先使用PCLStorage会失败) )。

我也一直在寻找Dropbox来解决这个问题,但是我仍然不确定如何实现它。 我还没有找到关于该主题的任何体面的教程,仅凭片段就很难弄清楚该怎么做。

实际上,我现在对此有一个解决方案。 我尚未设法使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/以开始使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM