Xamarin复制文件跨平台

时间:2017-03-08 16:14:16

标签: xamarin cross-platform

是否可以在Xamarin Cross Platform中复制文件?例如将SQLlite db3从一个目录复制到另一个目录。我只能得到文件的路径。

我找到了Xamarain.Android和iOS的解决方案,但我希望将它合并到一个Portable类中。

修改
也许有更好的解决方案,但这是我用PCL Sotrage获得的。

((juxt a b c) x) => [(a x) (b x) (c x)]

3 个答案:

答案 0 :(得分:2)

我认为一个好的解决方案是使用DependencyService

例如,在PCL中创建一个接口

public interface IFile {
    void Copy ( string fromFile, string toFile );
}

在Android中,特定于平台的实现

[assembly: Xamarin.Forms.Dependency (typeof (FileImplementation))]
namespace File.Droid {
  public class FileImplementation : IFile
  {
      public FileImplementation() {}

      public void Copy(string fromFile, string toFile)
      {
            System.IO.File.Copy(fromFile, toFile);
      }

  }
}

然后在您的PCL中,您可以致电

DependencyService.Get<IFile>().Copy("myfile", "newfile");

答案 1 :(得分:0)

为了避免在每个平台上处理不同的文件系统及其怪癖,您可以使用PCLStorage库在所有Xamarin.Forms平台上执行各种操作。

在这里查看:https://github.com/dsplaisted/PCLStorage

答案 2 :(得分:0)

这种很酷的新方法是使用.Net标准库而不是PCL。 Xamarin.IOS和Xamarin.Android支持.Net Standard 1.6,与PCL配置文件不同,包括System.IO.File。

您也可以使用共享项目而不是PCL,因为X.IOS和X.Android都支持System.IO.File,它可以在共享项目中无缝地工作。

否则,如果您使用的是Xamarin Forms,我认为Alessandro的DependencyService解决方案是一个很好的解决方案,即使您没有使用Forms,也会应用接口抽象概念。