2

这是我在该网站上的第一篇文章,我进行了广泛搜索以使我的代码正常工作。正如标题所说,它是一个 WinRT 应用程序,我在使用文件 IO 时遇到了困难。我想要做的是读取存储在应用程序安装目录内的文件夹中的文本文件,其中包含我将提供给 List<> 的数据行。

public static async void GetStations()
    {
        try
        {
            using (var stream = await Windows.Storage.ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(@"MyApp\Data\file.txt"))
            {
                using (var streamReader = new StreamReader(stream))
                {
                    while (streamReader.Peek() >= 0)
                    {
                        string line = await streamReader.ReadLineAsync();
                        //do something with 
                    }
                }

            }
        }
        catch (Exception e)
        {
            ...
        }
        finally
        {
            ...
        }
    }

问题是我在尝试运行它时遇到文件未找到错误。任何人都可以帮忙吗?如果您需要我发布更多信息,我可以...提前致谢。

4

2 回答 2

3

如果您将文件作为应用程序包的一部分进行分发,那么Package.Current.InstalledLocation就是正确的位置。ApplicationData.Current.LocalFolder仅包含您的应用程序已放置在那里的文件。

正确的代码是:

public static async void GetStations()
{
    try
    {
        using (var stream = await Windows.ApplicationModel.Package.Current.InstalledLocation.OpenStreamForReadAsync(@"Data\file.txt"))
        {
            using (var streamReader = new StreamReader(stream))
            {
                while (streamReader.Peek() >= 0)
                {
                    string line = await streamReader.ReadLineAsync();
                    //do something with 
                }
            }

        }
    }
    catch (Exception e)
    {
        //...
    }
    finally
    {
        //...
    }
}

该文件必须包含在您的项目Data文件夹中并Build Action设置为Content.

于 2013-01-21T17:29:53.797 回答
0

而不是从打开ApplicationData,您可能需要:

Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync

这将在包的安装文件夹中获取文件,而不是在应用程序的数据文件夹中。

于 2013-01-21T17:11:41.693 回答