Win8.1应用开发之文件操作
在操作文件之前,先相应用的应用功能声明进行设定。用户通过C#(非UI)对win8.1上的文件进行訪问,仅仅能局限于图片,音乐,视频和文档四个目录。
而通过文件选取器则能訪问到整个系统的文件。
(一)应用功能声明
对于win8应用商店应用,打开Package.appxmanifest文件。点击“功能”选项卡,勾选“音乐库”,“图片库”和“视频库”,这样你就能够通过代码对这里面的文件和目录进行操作:
音乐
musicLibrary 许可范围可提供对用户音乐的编程訪问能力,让应用无需用户交互就可以枚举和訪问库中的全部文件。此许可范围通经常使用在须要訪问整个音乐库的自己主动唱片点唱机应用中。
file picker 提供了一种强大的 UI 机制,让用户能够打开要通过某个应用处理的文件。
仅当应用须要进行编程訪问,而使用 file picker 无法实现编程訪问时。才应声明 musicLibrary 许可范围。
图片
picturesLibrary 许可范围可提供对用户图片的编程訪问能力,让应用无需用户交互就可以枚举和訪问库中的全部文件。
此许可范围通经常使用在须要訪问整个图片库的照片播放应用中。
file picker 提供了一种强大的 UI 机制,让用户能够打开要通过某个应用处理的文件。 仅当应用须要进行编程訪问,而使用 file picker 无法实现编程訪问时,才应声明 picturesLibrary 许可范围。
视频
videosLibrary 许可范围可提供对用户视频的编程訪问能力,让应用无需用户交互就可以枚举和訪问库中的全部文件。此许可范围通经常使用在须要訪问整个视频库的电影播放应用中。
file picker 提供了一种强大的 UI 机制。让用户能够打开要通过某个应用处理的文件。 仅当应用须要进行编程訪问,而使用 file picker 无法实现编程訪问时。才应声明 videosLibrary 许可范围。
对于“文档"目录的訪问,要依据VS提供的出错信息进行自己主动设置,之后要设置文件关联,依照提示做就可以。
(二)文件选取器
UI形式。可訪问整个系统上的文件。
使用文件选取器通过让用户选取文件和目录来訪问文件和目录。你能够使用 FileOpenPicker 类获取对文件的訪问,使用 FolderPicker 获取对目录的訪问。
通过文件选取器,你的应用能够在用户的整个系统上获得对文件和目录的訪问。当你调用文件选取器时。用户能够浏览其系统并选择文件(或目录)以訪问和保存。
在用户选取文件或目录之后,你的应用将这些选取作为 StorageFile 和 StorageFolder
对象进行接收。接着你的应用能够通过使用这些对象在选取的文件和目录上操作。
if (rootPage.EnsureUnsnapped())
{
FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
openPicker.FileTypeFilter.Add(".png"); StorageFile file = await openPicker.PickSingleFileAsync();
if (file != null)
{
// Application now has read/write access to the picked file
OutputTextBlock.Text = "Picked photo: " + file.Name;
}
else
{
OutputTextBlock.Text = "Operation cancelled.";
}
}
(三)通过编程进行文件操作
类KnownFolders 提供对当中包括用户内容的常见位置的訪问。 这包括用户的本地库(如照片、文档、音乐或视频)中的内容、可移动设备、家庭组以及媒体server设备。对于訪问磁盘文件来说。这仅仅局限于图片,音乐,文档和视频四个目录。
演示样例1:将server上的一个文件下载到“图片”目录下的一个子文件(需动态创建)中
string dync_IPv4 = "211.87.237.23";
string port = "8081";
string UrlJsonPath = "json/Images.txt";
//string UrlJsonPath = "Image/694021692/1214936171.png";
string uri = "http://" + dync_IPv4 + ":" + port + "/" + UrlJsonPath; System.Diagnostics.Debug.WriteLine(uri); string filename = "ImagesUri.txt";
//string filename = "DAXIA.png"; var rass = RandomAccessStreamReference.CreateFromUri(new Uri(uri));
IRandomAccessStream inputStream = await rass.OpenReadAsync();
Stream input = WindowsRuntimeStreamExtensions.AsStreamForRead(inputStream.GetInputStreamAt(0)); try
{
//获取图片扩展名的Guid
StorageFolder folder = KnownFolders.PicturesLibrary;
//System.Diagnostics.Debug.WriteLine(folder.Path);
//Creates a new file in the current folder, and specifies what to do if a file with the same name already exists in the current folder.
StorageFolder childFolder = await folder.CreateFolderAsync("WhereWeGo");
StorageFile outputFile = await childFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
//StorageFile outputFile = await folder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
System.Diagnostics.Debug.WriteLine(outputFile.Path);
using (IRandomAccessStream outputStream = await outputFile.OpenAsync(FileAccessMode.ReadWrite))
{
Stream output = WindowsRuntimeStreamExtensions.AsStreamForWrite(outputStream.GetOutputStreamAt(0));
await input.CopyToAsync(output);
output.Dispose();
input.Dispose();
}
}
catch (Exception)
{
System.Diagnostics.Debug.WriteLine("adfasd");
}
演示样例2:接演示样例1。将下载的文件读出来
// 在指定的文件夹下获取指定的文件
StorageFolder storageFolder = KnownFolders.PicturesLibrary;
StorageFolder folder = await storageFolder.GetFolderAsync("WhereWeGo");
StorageFile storageFile = await folder.GetFileAsync("ImagesUri.txt");
// StorageFile storageFile = await storageFolder.GetFileAsync("ImagesUri.txt"); if (storageFile != null)
{
// 获取指定的文件里的文本内容
string textContent = await FileIO.ReadTextAsync(storageFile, Windows.Storage.Streams.UnicodeEncoding.Utf8);
System.Diagnostics.Debug.WriteLine(textContent);
}
Win8.1应用开发之文件操作的更多相关文章
- day08-Python运维开发基础(文件操作与相关函数、函数基础)
1. 文件操作及相关函数 # ### 文件操作 """ fp = open("文件名称",mode=模式,encoding=编码集) fp 文件io对 ...
- Python开发——6.文件操作
一.文件操作 1.文件操作的处理流程 打开文件得到文件句柄并赋值给一个变量====>通过句柄对文件进行分析====>关闭文件 #1. 打开文件,得到文件句柄并赋值给一个变量 f=open( ...
- Android开发4——文件操作模式
一.基本概念 // 上下文对象private Context context; public FileService(Context context){ super(); this.context = ...
- python开发_python文件操作
关于python文件操作的详细说明,大家可以参考:关于python的文件操作 官方API:os-Miscellaneous operating system interfaces 下面是我做的demo ...
- Windows Store 开发总结——文件操作
1.读取Isolated Storage 每个Metro程序都有三个文件夹:Local,Roaming,Temp.每个文件夹的访问方法都是相同的. Local用于将数据存储在本地,这是程序特定的文件夹 ...
- 让你提前知道软件开发(22):shell脚本文件操作
文章1部分 再了解C语言 shell脚本中的文件操作 [文章摘要] 编写shell脚本时,经常会涉及到对文件的操作,比方从文件里读取一行数据.向文件追加一行数据等. 完毕文件读写操作的方法有非常多,了 ...
- 《Windows内核安全与驱动开发》4.1 文件操作
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发>4.1 文件操作 从 C:\a.txt 中读取一部分内容并利用 DbgPrin ...
- Python开发【第三篇】:Python基本之文件操作
Python基本之文本操作 一.初识文本的基本操作 在python中打开文件有两种方式,即:open(...) 和 file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open ...
- Android开发7:简单的数据存储(使用SharedPreferences)和文件操作
前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...
随机推荐
- ActiveMQ学习笔记(12)----ActiveMQ的集群
1. Queue consumer cluster ActiveMQ支持Consumer对消息的高可靠性的负载均衡消费,如果一个Consumer死掉,该消息会转发到其他的Consumer消费的Queu ...
- 《Unix环境高级编程》读书笔记 第13章-守护进程
1. 引言 守护进程是生存期长的一种进程.它们常常在系统引导装入时启动,仅在系统关闭时才终止.它们没有控制终端,在后台运行. 本章说明守护进程结构.如何编写守护进程程序.守护进程如何报告出错情况. 2 ...
- ZBrush中常用笔刷综合简介
单击左托盘的笔刷图标,弹出一个笔刷库,其中有许多常用笔刷,这也是许多初学者所头疼的问题,ZBrush的笔刷非常多,而且功能很强大,好多朋友不知道该选择哪一个笔刷进行雕刻.其实,在ZBrush的学习中我 ...
- Dapper基础知识一
在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. 1,什么是Dapper? Dapper,.NET下的一种ORM ...
- 关于VS2013 Browser Link 新功能
今天小明在编写MVC项目,设计前端项目的时候,突然遇到一个问题,就是无论什么页面,当每次执行调试的时候,页面中都会自动的加上这样一行代码: <!-- Visual Studio Browser ...
- POJ——T3352 Road Construction
http://poj.org/problem?id=3352 vis表示访问的次序 low的值相同的点在同一连通分量 #include <algorithm> #include <c ...
- inux 虚拟机桥接模式 静态ip设置,桥接才是王道
修改/etc/sysconfig/network-scripts 目录下的 ifcfg-eth0 [root@yangcb network-scripts]# cat ifcfg-eth0 DEVI ...
- 数学之路-python计算实战(18)-机器视觉-滤波去噪(双边滤波与高斯滤波 )
高斯滤波就是对整幅图像进行加权平均的过程.每个像素点的值,都由其本身和邻域内的其它像素值经过加权平均后得到.高斯滤波的详细操作是:用一个模板(或称卷积.掩模)扫描图像中的每个像素.用模板确定的邻域内像 ...
- 对象逆序列化报错:java.lang.ClassNotFoundException
简单的想从保存的对象中又一次解析出对象.用了逆序列化,但是报错: java.lang.ClassNotFoundException: xxxxxxxxxxxx at java.net.URLClass ...
- Java IO(二) 之 InputStream
源代码均以JDK1.8作为參考 前言: InputStream实现了两个接口Closeable和AutoCloseable: Closeable:JDK1.5中引入,Closeable接口中仅仅有一个 ...