在操作文件之前,先相应用的应用功能声明进行设定。用户通过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. selenium自动化(二).........................................Demo篇

    二 编写简单代码 简单代码一:   demo1.py 1.from selenium import webdriver driver = webdriver.Chrome() driver.get(& ...

  2. Hadoop Serialization -- hadoop序列化具体解释 (2)【Text,BytesWritable,NullWritable】

    回想: 回想序列化,事实上原书的结构非常清晰,我截图给出书中的章节结构: 序列化最基本的,最底层的是实现writable接口,wiritable规定读和写的游戏规则 (void write(DataO ...

  3. Android 最火的高速开发框架xUtils

    Github下载地址:https://github.com/wyouflf/xUtils xUtils简单介绍 xUtils 包括了非常多有用的Android工具. xUtils 最初源于Afinal ...

  4. XXXfragment that is not a fragment错误,fragment认不出来

    要注意的是fragment事实上是有两个版本号的,一个是 import android.support.v4.app.Fragment; 另外一个是 import android.app.Fragme ...

  5. Linux 经常使用快捷键

    桌面下: Alt+F5   取消最大化窗体 Alt+F9   最小化窗体  Alt+F10  最大化窗体  Alt+空格 打开窗体的控制菜单 (点击窗体左上角图标出现的菜单)     ctl+r   ...

  6. poj_2299Ultra-QuickSort,树状数组离散化

    求逆序数 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm&g ...

  7. 37.创建自定义的指令的限制使用 通过restrict 设置

    转自:https://www.cnblogs.com/best/tag/Angular/ 1. 元素名 <runoob-directive></runoob-directive> ...

  8. 如何设置eclipse代码自动提示功能

    如何设置eclipse代码自动提示功能 我们在刚安装完使用eclipse进行开发时,会发现没有代码提示会非常的不方便,下面小编将告诉你如何进行代码自动提示的设置. 工具/原料   eclipse 电脑 ...

  9. Java 类和对象7

    创建一个三角形类,成员变量三边,方法求周长,创建类主类A来测试它. public class sanjiaoxing { private double a; private double b; pri ...

  10. Swift学习笔记(3):基本运算符

    目录: 运算符 元组比较 空和运算符 区间运算符 运算符 +, -, *, /, %, =, +=, -=, *=, /= 算术运算符 >, <, ==, >=, <=, != ...