是否可以在Xamarin Cross Platform中复制文件?例如将SQLlite db3从一个目录复制到另一个目录。我只能得到文件的路径。
我找到了Xamarain.Android和iOS的解决方案,但我希望将它合并到一个Portable类中。
修改
也许有更好的解决方案,但这是我用PCL Sotrage获得的。
((juxt a b c) x) => [(a x) (b x) (c x)]
答案 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平台上执行各种操作。
答案 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,也会应用接口抽象概念。