WP8.1 Study12:文件压缩与Known Folder(包含SD卡操作)
一、文件压缩
当应用程序保存和加载数据,它可以使用压缩。
1、使用 Windows.Storage.Compression.Compressor 压缩,获得一个Compressor stream。
var s = await destFile.OpenAsync(FileAccessMode.ReadWrite);
Compressor compressor =
new Compressor(s.GetOutputStreamAt(), CompressAlgorithm.Mszip, );
其中,Mszip是压缩算法之一,我们还可以用Xpress、XpressHuff、Lzms算法压缩。0,表示使用默认的压缩块的大小。
2、解压使用Decompressor
二、Known Folder
KnownFolders是一个API,简化了开发人员的访问手机上的用户数据。在KnownFolders中包括设备上的SD卡(如果已插入)上的文件,而且在KnownFolders上的文件是所有APP共同拥有的。
1、KnownFolders 视图(例子)

2、获取用户的数据
KnownFolders提供方法获取手机上的图片、视频、音乐,比如获取手机上的图片,代码如下:
var pictures = await Windows.Storage.KnownFolders.PicturesLibrary.GetFilesAsync();
3、使用SD卡
App可以读写文件到SD卡中,而且这使得能够应用到在彼此之间共享数据。由于SD卡代表了一个“共享”资源,应用程序必须在manifest申请它想访问的文件类型关联。
(1)准备
让一个App有能力使用SD卡,是需要事先设置一些功能。

要把Removable Storage 功能打勾,如果你需要使用KnownFolder API,可能你要把Picture Library等功能打开。
(2)为程序关联想要访问文件的类型
在manifest中,为应用程序指定一个与它关联的文件类型,这样程序才能打开这种类型的文件,如图所示
(这个程序使.txt格式文件与之关联)
(3)获取SD卡操作
var devices = Windows.Storage.KnownFolders.RemovableDevices;
var sdCards = await devices.GetFoldersAsync();
if (sdCards.Count == ) return;
var firstCard = sdCards[];//firtCard是sd卡的根目录,可以在上面创建文件夹及文件
Note:我们可以在模拟器模拟SD卡操作,方法是打开WP8.1模拟器的工具面板,在sd卡界面模拟插入sd卡(同时也可以弹出sd卡),如下图

(4)例子
在sd卡上读取写入文件的完整方法。
写:
private async void writeCustomersToSDCard(string foldername, string filename, Customers customers)
{
var devices = Windows.Storage.KnownFolders.RemovableDevices; var sdCards = await devices.GetFoldersAsync(); if (sdCards.Count == ) return; var firstCard = sdCards[]; StorageFolder notesFolder = await firstCard.CreateFolderAsync(foldername, CreationCollisionOption.OpenIfExists); Stream stream = await notesFolder.OpenStreamForWriteAsync(filename, CreationCollisionOption.ReplaceExisting); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Customers)); serializer.WriteObject(stream, customers); await stream.FlushAsync(); stream.Dispose();
}
读:
private async Task<Customers> readCustomersFromSDCard(string foldername, string filename)
{
var devices = Windows.Storage.KnownFolders.RemovableDevices; var sdCards = await devices.GetFoldersAsync(); if (sdCards.Count == ) return null; var firstCard = sdCards[]; StorageFolder notesFolder = await firstCard.GetFolderAsync(foldername); Stream stream = await notesFolder.OpenStreamForReadAsync(filename); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Customers)); Customers result = serializer.ReadObject(stream) as Customers; stream.Dispose(); return result;
}
WP8.1 Study12:文件压缩与Known Folder(包含SD卡操作)的更多相关文章
- android:http下载文件并保存到本地或SD卡
想把文件保存到SD卡中,一定要知道SD卡的路径,获取SD卡路径: Environment.getExternalStorageDirectory() 另外,在保存之前要判断SD卡是否已经安装好,并且可 ...
- Android——FileOutputStream与openFileOutput()的区别分析【第一个用于文件存储,第二个用于SD卡存储】【转】
本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如 ...
- Android HTTP下载文件并保存到本地或SD卡
想把文件保存到SD卡中,一定要知道SD卡的路径,获取SD卡路径: Environment.getExternalStorageDirectory() 另外,在保存之前要判断SD卡是否已经安装好,并且可 ...
- shell命令:给当前目录里一个文件压缩一份不包含.svn文件的zip包
filepath=$(cd ")"; pwd) packagePath="$filepath"/package zipPath="$filepath& ...
- Android 读写SD卡的文件
今天介绍一下Android 读写SD卡的文件,要读写SD卡上的文件,首先需要判断是否存在SD卡,方法: Environment.getExternalStorageState().equals(Env ...
- android学习笔记47——读写SD卡上的文件
读写SD卡上的文件 通过Context的openFileInput.openFileOutput来打开文件输入流.输出流时,程序打开的都是应用程序的数据文件夹里的文件,其存储的文件大小可能都比较有限- ...
- 转-Android 之 使用File类在SD卡中读取数据文件
如果需要在程序中使用sdcard进行数据的存储,那么需要在AndroidMainfset.xml文件中 进行权限的配置: Java代码: <!-- 在sd中创建和删除文件的权限 --> ...
- 安卓培训第五天---上传文件SD卡
有关如何将文件上传到先说说SD卡: package com.example.lesson05_02; import java.io.File; import java.io.FileNotFoundE ...
- android 操作SD卡上的文件
(1)说明:操作SD卡上的文件须要增加下面权限 在SD卡上创建和删除文件权限 <uses-permission android:name="android.permission.M ...
随机推荐
- Linux的中断 & 中断和异常的区别
参考 http://www.yesky.com/20010813/192117.shtml 结构化程序设计思想认为:程序 = 数据结构 + 算法.数据结构体现了整个系统的构架,所以数据结构通常都是代码 ...
- java中如何把后台数据推送到页面上 【后续编辑】
https://my.oschina.net/yongqingfan/blog/535749 http://www.blogjava.net/BearRui/archive/2010/05/19/fl ...
- python的变量传递
python中变量都被视为对象的引用.python函数调用传递参数的时候,不允许程序员选择传值还是传引用,python参数传递采用的都是“传对象引用”的方式. 这种方式相当于传值和传引用的结合 ...
- iOS 使用drawRect: 绘制虚线椭圆
iOS 使用drawRect: 绘制虚线椭圆 1:首先如果要使用 drawRect 绘图 要导入 CoreGraphics.framework 框架 然后 创建 自定义view, 即是 myView继 ...
- Android GC 那点事
版权声明:本文由陈昱全原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/170 来源:腾云阁 https://www.qclo ...
- Java replace() 方法
Java replace() 方法 Java String类 replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串. 语法 publ ...
- python 练习 22
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false. Python 编程中 if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句…… el ...
- WLAN频段介绍-04
ISM频段 ISM频段,此频段主要是开放给工业.科学.医学三个主要机构使用,该频段是依据美国联邦通讯委员会(FCC)所定义出来,并没有所谓使用授权的限制. 工业频段:美国频段为902-928MHz,欧 ...
- 《Java程序设计》实验二 实验报告
实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Lin ...
- BeautifulSoup 常用方法
#输出所得标签的‘’属性值 获取 head里面的第一个meta的content值 soup.head.meta['content'] 获取第一个span的内容 soup.span.string 获取第 ...