Windows Phone8.1中SD卡文件的读取写入方法汇总

起初我想从SD卡上读取文件可以从两个方面着手吧:

1.通过文件选择器FileOpenPicker,来逐层到手机找到需要读取的文件,然后点击直接读取显示内容

2.直接到SD卡中读取文件

第一种方法逻辑有些复杂,设计到应用暂时的挂起和恢复,这篇博客不深究这种方法

第二种方法,相对于来说逻辑就比较简单了。只要获取到SD卡对象,遍历里面的文件或者直接指定某一个文件夹,接下

来就是读取文件内容或文件夹中的内容了。

对于上面的两种方法,作为初学者的我最近都尝试了好几遍,着实感觉学到了好多。多次逛博客,贴吧,论坛,在百度

也千百度次,下面总结我看到很好的几篇关于此的博客,推荐给大家:

首先微软的MSDN是最全的介绍文档,虽然我不太喜欢它太过书面化的解释,每次偏偏把一个本来就难理解的说成更难

理解的,这样很容易让读者望而生畏的。但是,不能否认它确实是一个学习的好工具!

MSDN中相关的资料(本章重点看KnownFolders):Windows.Storage Namespace

编程小梦:WP8.1开发:SD卡读写特定类型文件

小强孩(ExternalStorageDevice已经不支持了):Windows
Phone 8上的SD 卡读取---读取音频文件并设置为手机铃声

LiPan(内容略老一些,好多已经不支持了):Windows phone 8 学习笔记(4) 应用的启动--文件关联以及SD卡访问

下面是我的一些个人感悟和总结,大家其实看了以上博客就应该明白了八九分了,有需要的话我的可以凑合看看。

首先,要读取SD卡里的文件,可是要权限的,不能无缘无故就让你去读取或者写入。所以在真正写代码之前,还得做

一些准备工作。

第一:让手机知道你要访问SD里的文件,你提出这个需求,这样它才能指定你可以使用这个功能。

当然你也可以以xml的格式打开Package.appxmanifest,然后在里面自己添上一句代码即可:

第二:你获得了访问SD卡中文件的权限之后,还要申明访问哪个格式的文件(添加申明,申明中指定文件类型关联)

当然你依然可以自己写代码,以XML的形式打开上面的文件:

好了,准备工作做好了,下面就可以自由发挥写代码了:

第一步:

如何获取SD卡呢?代码之前补充:

MSDN中KnownFolders类的解释:KnownFolders Class

MSDN中StorageFolder类的解释:StorageFolder
Class

第二步:

获取SD卡文件夹并新建文件夹及文件并写入内容:

(newFolder是定义的全局StorageFolder对象;textblock是XAML页面的TextBlock标签的name属性)

var devices = Windows.Storage.KnownFolders.RemovableDevices;//返回StorageFolder类型
var SDUnion = await devices.GetFoldersAsync();//获取当前文件夹的顶级子文件夹的列表(SD卡就可以看作是文件夹)
if (SDUnion.Count == 0) return;
StorageFolder firstCard = SDUnion[0];
//你可以这样想上面的代码,获取插入手机的SD卡集合(其实一般都是一张SD卡,但是样子还是要做起来的),然后获取集合第一张SD卡(sdCards[0])

//在当前文件夹内新建子文件夹,并指定如果当前文件夹中存在具有相同名称的文件夹时应执行的操作.返回StorageFolder类型
newFolder = await firstCard.CreateFolderAsync("Test", CreationCollisionOption.OpenIfExists);
//在当前文件夹中新建文件,并指定如果文件的名称与当前文件夹中已有文件重复时进行什么操作.返回StorageFile类型
StorageFile newFile = await newFolder.CreateFileAsync("Demo.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(newFile, textblock.Text, Windows.Storage.Streams.UnicodeEncoding.Utf8);

读取的流程近乎一样,把上面代码最后两行的写入换成读取的代码即可:

StorageFile newFile = await newFolder.GetFileAsync("test.txt");
textblock.Text = await FileIO.ReadTextAsync(newFile);

当然我们不是每次进去都是要新建一个文件,并且判断是否存在这个文件,如果已经存在就利用OpenIfExists来获取

这个文件对象,这种方法太取巧。

大家不要思维定式,上面只是在新建文件的前提下进行的。要想按自己的意思办,就得好好看我上面给出的MSDN相关

的文档资料。

MSDN中GetFolderAsync(string name)方法:GetFolderAsync(string name)方法

当我们需要获得一个我们知道的名字的文件的时候,直接通过StorageFolder类的GetFolderAsync()方法获得

newFolder = await firstCard.GetFolderAsync("Test");
时间: 2025-01-12 12:37:45

Windows Phone8.1中SD卡文件的读取写入方法汇总的相关文章

数码相机SD卡文件格式化了怎么恢复

SD卡是一种广泛运用于数码相机.手机.多媒体播放器等便携设备上的存储记忆卡.作为使用最广泛的存储载体,SD卡因为拥有高记忆容量.快速数据传输率.极大的移动灵活性以及很好的安全性,同时性价比比较高,被大多数数码相机采用.在数据安全性方面,SD卡文件丢失是一个不容忽视的问题,格式化就是最常见的一种.那么,数码相机SD卡文件格式化了怎么恢复呢?SD卡格式化之后的恢复方法一般有三种. 第一种是从备份中恢复.一定要备份,我相信这是大多数有过数据丢失经历的小伙伴们都深有体会.当你出去旅行拍完照片,回来之后,

编程中遇到的Python错误和解决方法汇总整理

这篇文章主要介绍了自己编程中遇到的Python错误和解决方法汇总整理,本文收集整理了较多的案例,需要的朋友可以参考下 开个贴,用于记录平时经常碰到的Python的错误同时对导致错误的原因进行分析,并持续更新,方便以后查询,学习.知识在于积累嘛!微笑+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++错误: 复制代码代码如下: >>> def f(x, y):      print x, y  >>> t

Windows Phone8.1中的CommandBar

开篇之前: 若对Windows 8.1的相关Appbar和CommandBar控件感兴趣,强烈推荐王磊老师的博客园 链接:重新想象 Windows 8.1 Store Apps (72) - 新增控件: AppBar, CommandBar 以及不知道名字的博主对WP8.1中Appbar阐述的一篇文章:http://www.dotblogs.com.tw/eternaltung/archive/2014/05/07/wpappbar.aspx 好了,下面就Windows Phone8.1,以及看

【转载】Windows 10 mobile中无法注册后退键的解决方法

文章来源:http://wiki.9uads.com/?p=268 在做Windows Universal开发的时候,发现很多Windows Phone 8.1的api不能调用了,包括获取手机后退键的HardwareButtons.客户端设备信息EasClientDeviceInformation等,只需要在VS2015中添加 Microsoft Mobile Extension SDK for Universal App Platform 引用即可,方法如下图: 1.在项目中右键添加引用2.在

JAVA 中URL中文参数乱码的处理方法(汇总)

解决输入的全角汉字或者日文在URl中乱码的问题.以下我的实现 JS代码: function shiborikomuFw() {     var url = '${url08}';     var str = document.getElementsByName('fw');     //Str str = document.getElementsById('fw').Value;     for (var i = 0; i < str.length; i++) {     url = url +

android客户端把SD卡文件上传到服务器端并保存在PC硬盘文件夹中

在局域网内,实现从android客户端把手机SD卡上的文件上传到PC服务器端,并保存在PC硬盘的指定文件夹下.同时把PC端硬盘文件的目录和对文件的描述信息保存在mysql数据库中. 1.客户端关键代码: (1)获得SD卡上的文件 /** * 获得文件路径和状态信息 * * @return */ private String getFiles() { File path = null; // 判断SD卡是否存在可用 if (Environment.getExternalStorageState()

读取SD卡文件夹下的MP3文件和播放MP3文件

首先获取SD卡path路径下的所有的MP3文件,并将文件名和文件大小存入List数组(此代码定义在FileUtils类中): /** * 读取目录中的Mp3文件的名字和大小 */ public List<Mp3Info> getMp3Files(String path) { SDCardRoot = Environment.getExternalStorageDirectory() .getAbsolutePath(); //获取SD卡的路径名 List<Mp3Info> mp3I

Android 最简单的SD卡文件遍历程序

package com.wenhao.test.sddemo; import java.io.File; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import androi

windows phone开发中textbox控件的header属性

备注:博主windows phone学习新手,在博客园上分享自己刚刚掌握的一些学习笔记,内容简单,高手勿喷! 前一段时间看@消失3003的博客,发现了textboxt的header属性.这一属性在编写UI时可以节约不少代码,十分有用. 之前编写一个如下的微信登陆界面,代码会很长: 未使用Header属性的UI及代码: 代码如下: <Grid> <TextBlock Text="登录" FontSize="20" Margin="0,15,