xamarin.forms 文件的一些操作,统一代码

来源:互联网 发布:穆雅斓的淘宝店斌斌 编辑:程序博客网 时间:2024/05/29 15:03


下面是一个示例显示如何使用PCL存储创建一个文件夹和 写入一个文本文件,文件夹:

public async Task CreateRealFileAsync(){    // get hold of the file system    IFolder rootFolder = FileSystem.Current.LocalStorage;    // create a folder, if one does not exist already    IFolder folder = await rootFolder.CreateFolderAsync("MySubFolder", CreationCollisionOption.OpenIfExists);    // create a file, overwriting any existing file    IFile file = await folder.CreateFileAsync("MyFile.txt", CreationCollisionOption.ReplaceExisting);    // populate the file with some text    await file.WriteAllTextAsync("Sample Text...");}

背景信息

不同。 网络平台有不同的api来访问文件系统或 一个app-local持久化存储区域。 完整的。 净框架提供了 标准文件和目录的api(系统中。 IO命名空间),Silverlight和 Windows Phone提供隔离存储api,WinRT提供存储api 的窗口。 存储名称空间。

这些不同的api编写跨平台代码难度。 传统上, 你可以通过条件编译处理这个问题。 然而,这意味着你不能 利用便携式的类库,在任何情况下可能不会很好地伸缩 随着代码变得复杂(特别是因为WinRT需要使用 异步api)。

或者,您可以创建一个抽象为你所需要的功能 跨平台,为每个平台需要实现的抽象 使用。 这种方法允许您使用便携类库,和一般 使您的代码更清洁和更容易维护的孤立特定于平台的 块,而不是让他们随意洒在你的代码。

写一个抽象层有点障碍进入写作 跨平台的代码,没有理由每个人都应该去做 分别对功能通常需要本地文件IO。 PCL存储 旨在提供一个公共的抽象,很容易利用。

api

主api在PCL存储 ifile IFolder) IFileSystem 接口。 api应该是不言而喻的 应该觉得很熟悉,如果你有使用WinRT存储api。

的 IFileSystem 接口API的主要入口点。 你可以得到一个实例 实现对当前平台的 FileSystem.Current 财产。

这里有一些基本的存储类型:

namespace PCLStorage{    public static class FileSystem    {        public static IFileSystem Current { get; }    }    public interface IFileSystem    {        IFolder LocalStorage { get; }        IFolder RoamingStorage { get; }        Task<IFile> GetFileFromPathAsync(string path);        Task<IFolder> GetFolderFromPathAsync(string path);    }    public interface IFolder    {        string Name { get; }        string Path { get; }        Task<IFile> CreateFileAsync(string desiredName, CreationCollisionOption option);        Task<IFile> GetFileAsync(string name);        Task<IList<IFile>> GetFilesAsync();        Task<IFolder> CreateFolderAsync(string desiredName, CreationCollisionOption option);        Task<IFolder> GetFolderAsync(string name);        Task<IList<IFolder>> GetFoldersAsync();        Task<ExistenceCheckResult> CheckExistsAsync(string name, CancellationToken cancellationToken);        Task DeleteAsync();    }    public interface IFile    {        string Name { get; }        string Path { get; }        Task<Stream> OpenAsync(FileAccess fileAccess);        Task DeleteAsync();        Task RenameAsync(string newName, NameCollisionOption collisionOption, CancellationToken cancellationToken);        Task MoveAsync(string newPath, NameCollisionOption collisionOption, CancellationToken cancellationToken);    }} 


dll下载地址http://components.xamarin.com/view/pclstorage

  1. 开发交流qq470138890

    另外推荐168vpn,很多开发更新时候必备,



0 0
原创粉丝点击