在操作文件之前,先相应用的应用功能声明进行设定。用户通过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应用开发之文件操作的更多相关文章

  1. day08-Python运维开发基础(文件操作与相关函数、函数基础)

    1. 文件操作及相关函数 # ### 文件操作 """ fp = open("文件名称",mode=模式,encoding=编码集) fp 文件io对 ...

  2. Python开发——6.文件操作

    一.文件操作 1.文件操作的处理流程 打开文件得到文件句柄并赋值给一个变量====>通过句柄对文件进行分析====>关闭文件 #1. 打开文件,得到文件句柄并赋值给一个变量 f=open( ...

  3. Android开发4——文件操作模式

    一.基本概念 // 上下文对象private Context context; public FileService(Context context){ super(); this.context = ...

  4. python开发_python文件操作

    关于python文件操作的详细说明,大家可以参考:关于python的文件操作 官方API:os-Miscellaneous operating system interfaces 下面是我做的demo ...

  5. Windows Store 开发总结——文件操作

    1.读取Isolated Storage 每个Metro程序都有三个文件夹:Local,Roaming,Temp.每个文件夹的访问方法都是相同的. Local用于将数据存储在本地,这是程序特定的文件夹 ...

  6. 让你提前知道软件开发(22):shell脚本文件操作

    文章1部分 再了解C语言 shell脚本中的文件操作 [文章摘要] 编写shell脚本时,经常会涉及到对文件的操作,比方从文件里读取一行数据.向文件追加一行数据等. 完毕文件读写操作的方法有非常多,了 ...

  7. 《Windows内核安全与驱动开发》4.1 文件操作

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发>4.1 文件操作 从 C:\a.txt 中读取一部分内容并利用 DbgPrin ...

  8. Python开发【第三篇】:Python基本之文件操作

    Python基本之文本操作 一.初识文本的基本操作 在python中打开文件有两种方式,即:open(...) 和  file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open ...

  9. Android开发7:简单的数据存储(使用SharedPreferences)和文件操作

    前言 啦啦啦~大家好,又见面啦~ 本篇博文讲和大家一起完成一个需要注册.登录的备忘录的,一起学习 SharedPreferences 的基本使用,学习 Android 中常见的文件操作方法,复习 An ...

随机推荐

  1. AJAX和JSON笔记

    ### 1. 响应正文  传统的处理请求时,响应的方式有转发或重定向,无论是哪种,最终都会直接呈现某个页面给客户端,这样做的缺点在于:  1. 用户体验可能不好,例如:用户注册时,提交的用户名被占用, ...

  2. 如何发布到NPM上(转)

    简要:这篇文章介绍了如何讲自己的包发布到NPM上,马克一下,将来有用 ... npm包发布 发布npm包,更方便以后下载使用. 我们已经把插件代码上传到github上面了,那么我们是否可以也做成一个n ...

  3. JavaScript函数练习

    1. 判断一个数是否是素数 function isSushu (n) { n = n || 0; var isSu = true; for (var i = 2; i <= Math.sqrt( ...

  4. 数组的常用方法 Array;

    数组: 1,arr.join();//返回默认由逗号隔开的一个字符串,传参则返回所传参数隔开的一个字符串; 2,arr.push();//往数组最后添加数据,返回新的数组的length,这个方法将改变 ...

  5. Vue过渡与动画

    通过 Vue.js 的过渡系统,可以在元素从 DOM 中插入或移除时自动应用过渡效果.Vue.js 会在适当的时机为你触发 CSS 过渡或动画,你也可以提供相应的 JavaScript 钩子函数在过渡 ...

  6. 紫书 习题 8-21 UVa 1621 (问题分析方法)

    知道是构造法但是想了挺久没有什么思路. 然后去找博客竟然只有一篇!!https://blog.csdn.net/no_name233/article/details/51909300 然后博客里面又说 ...

  7. 上海交大课程MA430-偏微分方程续论(索伯列夫空间)之总结(Sobolev Space)

    我们所用的是C.L.Evans "Partial Differential Equations" $\def\dashint{\mathop{\mathchoice{\,\rlap ...

  8. 【codeforces 314C】Sereja and Subsequences

    [题目链接]:http://codeforces.com/problemset/problem/314/C [题意] 让你从n个元素的数组中选出所有的不同的非递减子数列; 然后计算比这个子数列小的和它 ...

  9. Mysql学习总结(25)——MySQL外连接查询

    1.左外连接left outer join或者left jion,outer可以省略不写,下边的右连接和全连接也一样: 左外连接的意思是,以left join左边的表中的数据为基准,即左边的表中有的必 ...

  10. Bootstrap组件之输入框组

    .input-group--设置div为输入框组: .input-group-lg..input-group-sm..input-group-xs--改变输入框组的尺寸: .input-group-a ...