如何在WinRT中打开嵌入的文本文件?

时间:2013-12-16 06:31:19

标签: c# windows-8 winrt-async

我的Windows 8商店应用程序中有一个嵌入式文本文件,我现在将其设置为内容以进行构建操作。我尝试使用以下代码(适用于Windows Phone),并根据此帖子中的说明对其进行了一些修改:

Read a Text File in Windows 8

但似乎很多语法已经改变,我在网上找到的大多数教程都关注Windows 8 Consumer Preview中可用的内容,而不是Windows 8的最终版本。这是我目前正在使用的代码, Windows Phone版本中的一些原始语法仍然存在:

    private async void Search(object sender, RoutedEventArgs e)
    {
        var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"folder\data.txt");
        var stream = await file.OpenStreamForReadAsync();
        var rdr = new StreamReader(stream.AsInputStream());


        try
        {
            while ((line = file.ReadLine()) != null)
            {
                string[] temp = line.Split(':');
                int tmp = 0;

                int.TryParse(temp[0], out tmp);

                data.Add(tmp, temp[1]);
            }
        }
        finally
        {
            if (file != null)
                file.Close();
        }
    }

3 个答案:

答案 0 :(得分:1)

最简单快捷的方法是以这种方式使用FileIO助手:

// custom app package uri
var uri = new Uri("ms-appx:///folder/data.txt");

//get the file
var localFile = await StorageFile.GetFileFromApplicationUriAsync(uri);

// read the text
var text = await Windows.Storage.FileIO.ReadTextAsync(localFile);

答案 1 :(得分:0)

答案 2 :(得分:0)

首先,确认该文件已标记为内容,并且“如果更新则复制”设置为true。

您的方法应如下所示:

private async void Search(object sender, RoutedEventArgs e)
{
    var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"folder\data.txt");
    var stream = await file.OpenStreamForReadAsync();
    var rdr = new StreamReader(stream.AsInputStream());
    var contents = await rdr.ReadToEndAsync();
}

这会将文件内容读入字符串变量名contents。从那里,你可以随心所欲地做任何事情。

WindowsRT中的文件访问API来自“.NET for Windows Store apps”配置文件,因此当您查看MSDN时,您需要确保要使用的API包含在受支持框架列表中的API中。