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 ...
随机推荐
- nginx 子进程 woker process 启动失败的问题
问题: 重启nginx服务,worker process 子进程启动失败,启动的都是master进程: 负载急速升高(平常都是4-5),占用CPU资源多的前十进程都是nginx : nginx 错误日 ...
- json转换方法
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.ut ...
- css 遮照镂空效果
实现这个效果有以下几种方式.(欢迎指出不足之处!!!) 一:最简单最粗暴的方法!截图! 实现原理:先截一张图片,然后写一个遮罩层,再把图片放上去就可以了! 过程过于简单,就别写代码跟截图效果了! 优 ...
- caioj 1204 Catalan数(模板)
题目中对卡特兰数的总结很不错 以下copy自题目 Catalan数列:1,1,2,5,14,42,(前面几个要背) 即 h(0)=1,h(1)=1,h(2)=2,h(3)=5...公式:h(n)=C( ...
- 紫书 习题 8-20 UVa 1620 (找规律+求逆序对)
这道题看了半天没看出什么规律, 然后看到别人的博客, 结论是当n为奇数且逆序数为奇数的时候 无解, 否则有解.但是没有给出证明, 在网上也找到详细的证明--我也不知道是为什么-- 求逆序对有两种方法, ...
- 【BZOJ 1257】[CQOI2007]余数之和
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] k%i=k-(k/i)i 则∑k%i = nk-∑(k/i)*i 因为k/i是整除运算. 所以会有某一段连续的i,它们的k/i的值都 ...
- 利用hive源码解析sql查了哪些表哪些字段
在hiveserver2中使用了org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer对抽象语法树(AST)进行语义分析,分析的过程可以得出hive查 ...
- mysql中文乱码解决方式
近期项目使用到mysql.却突然出现了中文乱码问题.尝试了多种方案,最终解决乱码问题,总结一下解决方式,给遇到同样问题的人一点參考. 中文乱码的原因 1.安装mysqlserver的时候编码集设定有问 ...
- 几周内搞定Java的10个方法
不要将Java与JavaScript弄混了,Java的目标是“一次编译,到处调试”(呃,不对,是“到处运行”).简单来说,就是Java程序可以直接在任何设备上运行. Java语言是什么? 不管我们是否 ...
- js 动画1
div速度 运动: 代码例如以下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...