这是我在这个网站上的第一篇文章,我进行了广泛的搜索以使我的代码正常工作。 正如标题所示,这是一个 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
{
...
}
}
问题是我在尝试运行它时收到文件未找到错误。有人可以帮忙吗?如果您需要我发布更多信息,我可以... 提前致谢。
最佳答案
如果您将文件作为应用程序包的一部分进行分发,则 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
。
关于C# Windows 应用商店应用程序 - 使用 async/await 的文件 IO 导致超时和 InvalidOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14443710/