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(0), CompressAlgorithm.Mszip, 0);

其中,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 == 0) return;

            var firstCard = sdCards[0];//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 == 0) return;

            var firstCard = sdCards[0];

            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 == 0) return null;

            var firstCard = sdCards[0];

            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;
        }
时间: 2024-10-06 08:01:07

WP8.1 Study12:文件压缩与Known Folder(包含SD卡操作)的相关文章

Android——FileOutputStream与openFileOutput()的区别分析【第一个用于文件存储,第二个用于SD卡存储】【转】

本文实例分析了Android编程中FileOutputStream与openFileOutput()的区别.分享给大家供大家参考,具体如下: openFileOutput() 首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. public void save() { try { FileOutputStream outStream=this.openFileO

在SD卡上创建/删除文件夹 使用DDMS透视图管理SD卡

在SD卡上创建和删除文件夹 基本步骤: (1):在控制台中输入adb shell命令,进入shell控制台. (2):在shell控制台中输入cd sdcard 命令,进入SD卡中. (3):在shell控制台中输入ls -al 命令,查看sd卡中包含的全部文件和文件夹. (4):在shell控制台中输入mkdir mrsoft 命令,创建一个名为mrsoft的文件夹. (5):在shell控制台中输入ls -al命令,查看SD卡中包含的全部文件和文件夹.可以看到文件夹mrsoft已经创建. (

assets文件夹下文件目录复制到SD卡下

private void copyDir(String path) { String[] files; try { files = this.getAssets().list(path); if (files.length == 0) { copyFile(path); } else { String filePath = "mnt/sdcard" + "/" + path; File file = new File(filePath); file.mkdirs()

Android 照相机拍摄照片,压缩后储存于SD卡

一般相机拍摄的照片大小为3-4M左右,这里因为需要完成将拍摄好的照片上传到服务器功能,所以需要将得到的照片进行压缩.这里演示就直接存放在SD卡中. 网上搜索了不少资料,得知可以使用:inSampleSize 设置图片的缩放比例. 但是,这里需要注意: 1)inJustDecodeBounds = true; 需要先设置为真,表示只获得图片的资料信息.如果此时检验bitmap会发现bitmap==null; 2)如果需要加载图片的时候,必须重新设置inJustDecodeBounds = fals

基础学习总结(三)--文本数据读写文件、SD卡

简单的文本数据写入文件不需要权限,读写SD卡在4.0版本前需要写权限.在4.0后需要读写权限 布局: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android

android 操作SD卡上的文件

(1)说明:操作SD卡上的文件需要加入以下权限 在SD卡上创建和删除文件权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 在SD卡上写入数据的权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 在sd卡上的文件操作和我上一篇文

转-Android 之 使用File类在SD卡中读取数据文件

如果需要在程序中使用sdcard进行数据的存储,那么需要在AndroidMainfset.xml文件中 进行权限的配置: Java代码:   <!-- 在sd中创建和删除文件的权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 向SD卡中的写入权限 --> Java代码:   <uses-permission an

手机sd卡删除文件恢复呢

手机sd卡删除文件恢复呢?我们现在有些时候会使用我们的SD卡去存储我们的数据,但是有些时候呢,我们会因为自己的不小心或者是其他方面的原因,将我们的手机SD卡上的文件给误删了. 那么我们若是误删了我们的SD卡文件,我们是不是可以恢复呢?我们又该怎么去进行我们SD卡的恢复呢?相信很多的人都会有这个疑问,下面我们就一起看看具体的SD卡删除文件如何恢复吧. 第一步:在过程刚刚开始的时候,打开我们丢失数据的电脑,然后在电脑浏览器上下载并安装"互盾数据恢复软件",之后对软件进行安装等待安装结束:

sd卡删除文件了能恢复吗?恢复的具体方法

sd卡删除文件了能恢复吗?恢复的具体方法.我们现在很多的时候或许并不是使用我们的SD卡去进行数据的存储,但是有的时候,我们会因为自己的一些细小的原因,将我们的文件存储到我们的SD卡上. 那么当我们删除了我们SD卡上的数据的时候,我们该怎么办呢?我们是不是可以恢复呢?我们又该怎么去进行恢复呢?若是你也不清楚的话,不用担心,我们或许可以用下面的方法找回. 1.在过程刚刚开始的时候,打开我们丢失数据的电脑,然后在电脑浏览器上下载并安装"互盾数据恢复软件",之后对软件进行安装等待安装结束: 2