原文:UWP入门(十)--创建、写入和读取文件

核心的 API github代码

  • StorageFolder 类
  • StorageFile 类
  • FileIO 类

使用 StorageFile 对象读取和写入文件

1. 创建文件

// Create sample file; replace if exists.
Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder; Windows.Storage.StorageFile sampleFile = await storageFolder.CreateFileAsync("sample.txt",Windows.Storage.CreationCollisionOption.ReplaceExisting); Debug.Write(""+storageFolder.Path);

创建路径为:

C:\Users\v-shenya\AppData\Local\Packages\e0e11ee4-de7a-4679-a860-651e63d24a4a_nj65d38msn17e\LocalState

2. 写入文件

下面介绍了如何使用 StorageFile 类在磁盘上写入可写文件。 每种写入文件(除非你在创建后立即写入文件)的方法的常见第一步是使用 StorageFolder.GetFileAsync 获取文件

 //1.获取文件
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = await storageFolder.GetFileAsync("sample.txt");

2.1 将文本写入文件

通过调用 FileIO 类的 WriteTextAsync 方法,将文本写入文件

await FileIO.WriteTextAsync(sampleFile, "Swift as a shadow");

2.2 使用缓冲区将字节写入文件(2 步)

//1 首先,调用 ConvertStringToBinary 以获取你想要写入文件的字节(基于随机字符串)的缓冲区
var buffer = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary(
"What fools these mortals be", Windows.Security.Cryptography.BinaryStringEncoding.Utf8); //2然后,通过调用 FileIO 类的 WriteBufferAsync 方法,将字节从你的缓冲区写入文件
await Windows.Storage.FileIO.WriteBufferAsync(sampleFile, buffer);

2.3 使用流将文本写入文件(4 步)

//使用流将文本写入文件(4 步)
//1.首先,调用 StorageFile.OpenAsync 方法打开文件。 打开操作完成后,它将返回文件的内容流。
var stream = await sampleFile.OpenAsync(FileAccessMode.ReadWrite); //2.接下来,通过从 stream 调用 GetOutputStreamAt 方法获取输出流。 将其放到 using 语句中以管理输出流的生存期
using (var outputStream = stream.GetOutputStreamAt(0))
{
// We'll add more code here in the next step.
}
stream.Dispose(); // Or use the stream variable (see previous code snippet) with a using statement as well. //3.现在,将此代码添加到现有的 using 语句中,以通过创建一个新的 DataWriter 对象和调用 DataWriter.WriteString 方法写入输出流
using (var dataWriter = new Windows.Storage.Streams.DataWriter(outputStream))
{
dataWriter.WriteString("DataWriter has methods to write to various types, such as DataTimeOffset.");
} //4.最后,添加此代码(在内部 using 语句中)以使用 StoreAsync 将文本保存到你的文件并使用 FlushAsync 关闭该流
await dataWriter.StoreAsync();
await outputStream.FlushAsync();

3. 从文件读取

下面介绍了如何使用 StorageFile 类在磁盘上从文件进行读取。 每种从文件读取的方法的常见第一步是使用 StorageFolder.GetFileAsync 获取文件。

StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = await storageFolder.GetFileAsync("sample.txt");

3.1 从文件读取文本

通过调用 FileIO 类的 ReadTextAsync 方法,从文件读取文本

string text = await Windows.Storage.FileIO.ReadTextAsync(sampleFile);

3.2 通过使用缓冲区从文件读取文本(2 步)

首先,调用 FileIO 类的 ReadBufferAsync 方法

var buffer = await Windows.Storage.FileIO.ReadBufferAsync(sampleFile);

然后,使用 DataReader 对象先读取缓冲区的长度,然后读取其内容

using (var dataReader = Streams.DataReader.FromBuffer(buffer))
{
string text = dataReader.ReadString(buffer.Length);
}

3.3 使用流从文件读取文本(4 步)

通过调用 StorageFile.OpenAsync 方法,为你的文件打开流。 操作完成后,它将返回文件的内容流

var stream = await sampleFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);

获取稍后要使用的流的大小

ulong size = stream.Size;

通过调用 GetInputStreamAt 方法获取输入流。 将其放到 using 语句中以管理流的生存期。 调用 GetInputStreamAt 时指定 0,以将位置设置在流的开头

using (var inputStream = stream.GetInputStreamAt(0))
{
// We'll add more code here in the next step.
}

最后,将此代码添加到现有的 using 语句中以在流上获取 DataReader 对象,然后通过调用 DataReader.LoadAsync 和 DataReader.ReadString 读取文本

using (var dataReader = new Windows.Storage.Streams.DataReader(inputStream))
{
uint numBytesLoaded = await dataReader.LoadAsync((uint)size);
string text = dataReader.ReadString(numBytesLoaded);
}

UWP入门(十)--创建、写入和读取文件的更多相关文章

  1. Win10系列:JavaScript写入和读取文件

    正如上面的内容中所提到的,文件保存选取器用于保存文件,通过Windows.Storage.Pickers命名空间中的FileSavePicker类的pickSaveFileAsync函数可以向指定的文 ...

  2. js创建、写入、读取文件(转)

    下面是对此知识的系统介绍(转自互联网): Javascript 是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和 ...

  3. Python序列化模块-Pickel写入和读取文件

    利用pickle 存储和读取文件 1.存储文件: #引入所需包,将列表元素存入data2的文件里面 import pickle mylist2 ={'1','nihao','之后','我们',1,2, ...

  4. [转]java按指定编码写入和读取文件内容的类

    读文件: BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符.数组和行的高效读取. 可以指定缓冲区的大小,或者可使用默认的大小.大多数情况下,默认值就足够大了. 通常,R ...

  5. php写入和读取文件内容

    function read_file($filename){ // $filename = "/usr/local/something.txt"; $handle = @fopen ...

  6. 【原】Python 用例:二进制写入和读取文件内容

    import pickle as p shoplistfile='shoplist.data' shoplist=['apple','carrot'] # because the dump opera ...

  7. 在外部存储器上写入或读取文件(Environment类、File类的使用)

    1.Environment类 简单介绍:http://www.cnblogs.com/mengdd/p/3742623.html 详细介绍:http://www.2cto.com/kf/201408/ ...

  8. Java 创建文件夹和文件,字符串写入文件,读取文件

    两个函数如下: TextToFile(..)函数:将字符串写入给定文本文件: createDir(..)函数:创建一个文件夹,有判别是否存在的功能. public void TextToFile(fi ...

  9. php学习笔记--高级教程--读取文件、创建文件、写入文件

    打开文件:fopen:fopen(filename,mode);//fopen("test.txt","r"): 打开模式:r  仅仅读方式打开,将文件指针指向 ...

随机推荐

  1. js进阶 9-10 html控件如何实现点击自动选择控件内容

    js进阶 9-10  html控件如何实现点击自动选择控件内容 一.总结 一句话总结: 1.在click事件中,如果focus,那就select 2.blur 1.html中控件添加两种方式? 在表单 ...

  2. UITableView的一些常用设置和代理方法

    - (void)viewDidLoad { [super viewDidLoad]; tableview = [[UITableView alloc]initWithFrame:CGRectMake( ...

  3. [UWP]使用Acrylic(亚克力)

    原文:[UWP]使用Acrylic(亚克力) 1. 前言 在 如何使用Fluent Design System 这篇文章里已经简单介绍过Reveal的用法,这篇再详细介绍其它内容. 自Windows ...

  4. jsp中国文字形式提交,request对象获取乱码

    jsp表单提交中文字符,request对象获取时乱码解决方法 第一种: 在request对象获取页面Charset中的"C"大写,且页面无中文字符,最好用英文,否则MyEclips ...

  5. 推荐一些C#相关的网站和书籍

    1.http://msdn.microsoft.com/zh-CN/ 微软的官方网站,C#程序员必去的地方.那里有API开发文档,还有各种代码.资源下载. 2.http://social.msdn.m ...

  6. 西门子S7报文解析

    1.报文的基本格式 1.1 第1和第2个字节是:固定报文头03 00,这里我们就用到三种报文: a.初始化 b. 读 c.写,都是这种格式: 1.2 第3和第4个字节是:整个报文的长度: 其它部分就是 ...

  7. CUDA线程协作之共享存储器“__shared__”&&“__syncthreads()”

    在GPU并行编程中,一般情况下,各个处理器都需要了解其他处理器的执行状态,在各个并行副本之间进行通信和协作,这涉及到不同线程间的通信机制和并行执行线程的同步机制. 共享内存"__share_ ...

  8. Metropolis 采样与蒙特卡洛算法

    Metropolis 算法又叫 Metropolis 抽样,是模拟退火算法的基础,在早期的科学计算中蒙特卡洛方法(Monte Carlo)是对大量原子在给定温度下的平衡态的随机模拟,当蒙特卡洛算法计算 ...

  9. windows下编译qt的mysql驱动

    windows下编译qt的mysql驱动cd %QTDIR%\src\plugins\sqldrivers\mysqlqmake –o Makefile INCLUDEPATH+="C:\M ...

  10. tomcat的配置文件

    在windows里使用tomcat有多种不同的方式,这里用的是压缩包的tomcat. 软件部署 独立程序启动 网上教程比较多,比较直观 1.在环境变量中设置JAVA_HOME或者JRE_HOME.必须 ...