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
开发交流qq470138890
另外推荐168vpn,很多开发更新时候必备,
- xamarin.forms 文件的一些操作,统一代码
- xamarin.forms 拍照和视频的操作
- xamarin .forms 手机的一些信息获取Device Info Plugin
- 开启Xamarin.Forms的智能感知(代码提示功能)
- Xamarin.Forms教程开发Xamarin.Forms应用程序需要的工具
- Xamarin.Forms 的一点体会
- xamarin.forms Vibrate Plugin震动操作
- xamarin IOS对xamarin.forms的Tabbedpage的renderer实现
- xamarin.forms 位置访问和通讯录访问和拍照加图片,的操作(推荐)
- xamarin.forms Geolocator Plugin 地理位置的获取
- 2.Xamarin.Forms里的文本控制
- 5.Xamarin.Forms里按钮的实现
- Xamarin.Forms 获取设备的ip地址
- Xamarin.Forms的ActivityIndicator和ProgressBar比较
- Xamarin.Forms特殊的视图BoxView
- Xamarin.Forms支持的地图显示类型
- Xamarin.Forms XAML控件的公共属性
- Xamarin.Forms的滚动视图ScrollView
- phoengap百度云推送插件(android)
- xamarin.forms 拍照和视频的操作
- hdu 4870 Rating (概率dp)
- 【Qt入门实践】Meta-Object的重要性和使用原理
- 算法提高 最大乘积 (排序+模拟+贪心)
- xamarin.forms 文件的一些操作,统一代码
- JavaScript语言标识符和保留字
- MM模块-MIGO收货后自动打印收货单
- 例题1.14 填充正方形 UVa11520
- LeetCode01-two sum
- xamarin.forms Settings Plugin 设置插件
- 什么是ACE?为什么它说是开发游戏服务器的利器?
- Mysql命令行导入sql数据
- JFinal中json的使用