之前提及到应用数据文件的种类和区别,那么既然知道了如何获取应用数据文件,那么接下来自然是对文件和文件夹
的相关处理操作了。文件夹类对应的是StorageFolder类,文件类对应的是StorageFile类。至于文件夹和文件的相关
属性和方法就不做说明了,MSDN上都有详细的介绍,也就是新建,删除,移动、取得,重命名等等这些操作,依据
名称即可知道属性和方法是怎样的。重点是对文件的读写操作。
对文件的操作无外乎文件的读写操作:
可以使用StreamReader类、StreamWriter类以及FileIO类读取和写入文件的内容。a. FileIO类是专门为IStorageFile类型的对象表示的读取和写入文件提供帮助器方法。此类是一个静态类,需直接调
用其静态的文件读写方法进行操作,分别为FileIO.ReadTextAsync(file)和FileIO.WriteTextAsync(file)。
b. StreamReader类和StreamWriter类可以读取和写入标准文本文件的各行信息。默认编码为UTF-8。这边要注意读
取和写入的是标准的文本文件,并不包括图片等其他非文本文件。
两者示例伪代码如下:
FileIO类写入文件:
//获取本地文件夹根目录
IStorageFolder local = ApplicationData.Current.LocalFolder;
//在文件夹中创建文件,如果文件已经存在则替换掉
IStorageFile storageFile = await local.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
//使用FileIO类将文件内容写入文件
await FileIO.WriteTextAsync(storageFile, content);StreamReader类读取文件:
IStorageFolder local = ApplicationData.Current.LocalFolder;
IStorageFile file = await local.GetFileAsync(filename);
//打开文件获取文件的数据流
IRandomAccessStream accessStream = await file.OpenReadAsync();
//使用StreamReader读取文件的内容,需要将IRandomAccessStream对象转化成Stream对象来初始化
StreamReader对象
using (StreamReader streamReader = new
StreamReader(accessStream.AsStreamForRead((int)accessStream.Size)))
{content = streamReader.ReadToEnd();
}
除了上述两种方法,还可以使用WindowsRuntimeStorageExtension类提供的实现IStorageFolder和IStorageFile
接口的类的使用方法来进行文件夹和文件的读写操作。
这些扩展方法包括OpenStreamForReadAsync和OpenStreamForWriteAsync方法,示例如下:
byte[] fileBytes = Encoding.UTF8.GetBytes(content,ToCharArray());
using(var s = await file.OpenStreamForWriteAsync()){
s.Write(fileBytes,0,fileBytes.Length);
}