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

原文: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);
    }
时间: 2024-11-08 22:27:36

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

java按指定编码写入和读取文件内容的类分享_java

可以指定编码如:utf-8来写入和读取文件.如果文件编码未知,可以通过该方法先得到文件的编码后再指定正确的编码来读取,否则会出现文件乱码问题. 如何识别文件编码请参考:java自动根据文件内容的编码来读取避免乱码 复制代码 代码如下: package com.zuidaima.util; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputS

监控一个文件夹,如果有图片创建,就读取文件流

问题描述 本人用的FileSystemWatcher,但是文件创建的时候读取只能读取到一部分,貌似文件还没有创建完成就读取了,请教各位大神有解决方法吗?谢谢!高分悬赏 解决方案 解决方案二:绑定元以下!解决方案三:延迟一定的时间后再读取解决方案四:///<summary>///当文件夹内监控内容发生变化时///</summary>///<paramname="sender"></param>///<paramname="e

VC++实现CStdioFile写入及读取文件并自动换行的方法_C 语言

本文所述CStdioFile可实现在VC++中主要用来写入及读出文件的功能,继承自CFile类,它会自动处理 "\r\n",遇到"\n"自动添加\r并设置光标在当前行,它同时可以自动换行,不过使用CStdioFile在处理大文件时速度有些慢, 用CStdioFile写入读取文件实现代码如下: LPTSTR filter=_T("Playlist Files(.txt)|*.txt|"); CString tempPath; CFileDialog

php 写入和读取文件函数

//读取文件函数 <? function readfromfile($file_name) { if (file_exists($file_name)) { $filenum=fopen($file_name,"r"); flock($filenum,lock_ex); $file_data=fread($filenum, filesize($file_name)); rewind($filenum); //osphp.com.cn fclose($filenum); retur

【UWP通用应用开发】文件选取器、获取文件属性、写入和读取、保存读取和删除应用数据

读取文件和文件夹名 这一节开始我们将陆续看到UWP通用应用是如何获取到文件及文件夹的属性等信息,以及如何写入和读取数据等,当然了最重要的还是如何保存读取和删除应用的数据. 在Windows上读取文件名.文件夹名 首先我们在XAML中定义一个Button和TextBlock,将读取文件/文件夹名的过程写在前者的click事件中,后者则用来显示文件信息. <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}&

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

打开文件:fopen:fopen(filename,mode);//fopen("test.txt","r"): 打开模式:r 只读方式打开,将文件指针指向文件头 r+ 读写方式打开,将文件指针指向文件头 w 写入方式,指向文件头,如果不存在则尝试创建 w+ 读写方式,指向文件头,如果不存在则尝试创建 a 写入方式打开,指向文件末尾,如果不存在则尝试创建 a+ 读写方式打开,指向文件末尾,如果不存在则尝试创建 读取文件:fread:fread(); readfile

UWP入门(九)-- 枚举和查询文件和文件夹

原文:UWP入门(九)-- 枚举和查询文件和文件夹 核心 API 所在的命名空间: Windows.Storage Windows.Storage.Streams Windows.Storage.Pickers 用它们三可以实现在文件中读取和写入文本和其他数据格式并管理文件和文件夹 本文例子都是官方文档中的示例,只是里面代码对菜鸟不友好,我重新整理下.本文 github代码 1. GetFoldersAsync 首先使用 StorageFolder.GetFilesAsync 方法获取 Pict

【python】创建,读取文件

通过指明打开的文件和模式来创建一个file类的实例.模式可以为读模式('r').写模式('w')或追加模式('a'). 用写模式打开文件,然后使用file类的write方法来写文件,最后用close关闭这个文件.再一次打开同一个文件来读文件.如果程序中没有指定模式,读模式会作为默认的模式.在一个循环中,使用readline方法读文件的每一行.这个方法返回包括行末换行符的一个完整行.所以,当一个 空的 字符串被返回的时候,即表示文件末已经到达了,于是我们停止循环. 注意,因为从文件读到的内容已经以

UWP入门(十二)--数据绑定用法

原文:UWP入门(十二)--数据绑定用法 主要几个元素: Template DataTemplate ItemSource 数据绑定是一个数据提取的方法,能使数据和UI上的控件紧密相连,下面的Demo是这样的: 有许多书的集合,书 类中有图片.标题.作者和ID,把它成现在GridView 控件上,每次点击GridView 的时候动态显示书本信息 github 代码 效果图: 原理图: 1. Template 为GridView 创建一个Template,决定每个独立的图书对象如何呈现在屏幕上 <