如何在Windows Phone 8上使用Windows.Storage正确读取和写入文件

Ear*_*rlz 4 c# file-io windows-runtime windows-phone-8

我只需要使用Windows.Storage API简单地写入文件并从Windows Phone 8中的文件读取.使用旧的IsolatedStorage方法相对容易,但使用新的WinRT API证明它更加困难.

我一直试图写它,但似乎有所有这些奇怪的东西,如IBuffer.等等.使用WinRT的完整版本,使用Windows.Storage.FileIO非常容易,它似乎存在,以防止像我这样的开发人员疯狂.但是,它没有在电话版本中实现.此外,我观看了一个Channel9视频,其中显示了一些代码示例,但是他们有一个错误,因为他们使用标记为Security Critical的方法获得常规流.显然不允许获得常规流.

那么,有人能为我提供一个简洁而正确的片段,介绍如何将文件读入字符串以及如何将字符串写入文件,并使用正确的使用和处理技术吗?

Mat*_*cey 13

这是一个简单的例子:

public async Task WriteDataToFileAsync(string fileName, string content)
{
    byte[] data = Encoding.Unicode.GetBytes(content);

    var folder = ApplicationData.Current.LocalFolder;
    var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

    using (var s = await file.OpenStreamForWriteAsync())
    {
        await s.WriteAsync(data, 0, data.Length);
    }
}

public async Task<string> ReadFileContentsAsync(string fileName)
{
    var folder = ApplicationData.Current.LocalFolder;

    try
    {
        var file = await folder.OpenStreamForReadAsync(fileName);

        using (var streamReader = new StreamReader(file))
        {
            return streamReader.ReadToEnd();
        }
    }
    catch (Exception)
    {
        return string.Empty;
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样使用它们:

await this.WriteDataToFileAsync("afile.txt", "some text to save in a file");

var contents = await this.ReadFileContentsAsync("afile.txt");
Run Code Online (Sandbox Code Playgroud)