感谢以下链接,我们已经了解了如何将TXT文件加载到我的Windows Phone 8.1应用程序中。我的问题与我的代码无效的原因有关。 (我的代码在链接到其他StackOverflow问题后开始。)
这是一个相同的问题,有一个有效的答案。 Read text file in project folder in Windows Phone 8.1 Runtime
我将StorageFile设置为手机上文件的相对位置。然后我尝试使用该位置打开StreamReader。这个小片段编译得很好,但是在执行时会遇到运行时错误,并且" firstFile"是空/ null。
const string filename = "FileToRead.txt";
StorageFile firstFile = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
using (StreamReader streamFirstFile = new StreamReader(await firstFile.OpenStreamForReadAsync()))
{
loadText_Button.Text = await streamFirstFile.ReadToEndAsync();
}
为了进一步澄清这个具体问题,以下两行代码是否相同,如果没有,我怎么使用它错了?
ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
StorageFile.GetFileFromApplicationUriAsync(new Uri(@"ms-appx:///Assets/FileToRead.txt"))
我甚至尝试将其设置如下:
ApplicationData.Current.LocalFolder.GetFileAsync(String.Format("{0}{1}", "Assets/", fileName);
提前谢谢大家。
答案 0 :(得分:3)
如果您想从包中读取文件,则应引用Package.Current.InstalledLocation,而不是LocalFolder。您还应该检查您的资源是否已将 Build Action 设置为 Content 。
您可以通过两种方式访问您的文件 - 从 InstalledLocation 文件夹获取文件:
StorageFile file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"Data\" + fileName);
或 Uri :
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(@"ms-appx:///Data/"+fileName));
很少注意到:
您还可以找到一些有用的信息at this post。
答案 1 :(得分:0)
粗心的说明。
如果您在Assets文件夹中放置的文件名以“.json”结尾,则使用上述给定的函数调用将无法从您的代码访问该文件。只需重命名文件,使其以“.txt”结尾。
我会发表评论,但我没有所需的声誉。