在Windows Phone 8.1中加载TXT文件

时间:2015-02-06 17:17:26

标签: c# windows-phone-8.1

感谢以下链接,我们已经了解了如何将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);

提前谢谢大家。

2 个答案:

答案 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));

很少注意到:

    中的
  • 文件是只读
  • 您还可以通过在文件夹名称
  • 之前提供其名称来访问共享项目中的文件
  • 注意构建操作 - 默认情况下,某些文件由VS设置为内容,而某些文件则没有。

您还可以找到一些有用的信息at this post

答案 1 :(得分:0)

粗心的说明。

如果您在Assets文件夹中放置的文件名以“.json”结尾,则使用上述给定的函数调用将无法从您的代码访问该文件。只需重命名文件,使其以“.txt”结尾。

我会发表评论,但我没有所需的声誉。