【问题标题】:How to read file (Metro/WinRT)如何读取文件 (Metro/WinRT)
【发布时间】:2012-09-24 02:31:09
【问题描述】:

我对这个看似简单的任务的明显复杂性感到非常震惊。我知道我必须使用StorageFile 类,并且我找到了这个example,但我只想读取一个我知道路径的单个文件,并将其数据作为文本读取到字符串中。

据我所知,要读取带有StorageFile 的文件,我必须通过一堆接口; IAsyncOperation<StorageFile>IAsyncOperationCompletedHandler

一定有更好(更简单)的方法。比如:

using (StorageFile sf = StorageFile.OpenAsync("myFile.txt"))
{
    string line = sf.ReadLine();
}

显然这不起作用,但也许我错过了什么,或者有人可以向我解释如何以不同的方式读取文件?

【问题讨论】:

  • 我认为“Windows-8”、“Microsoft-metro”和“Winrt”标签太微妙了。 ;) 可能想编辑您的问题以说明:这是针对 WINDOWS METRO 的!
  • @Matthew Watson 是的,谢谢。我可能应该意识到会有这样的头衔立即急于获得声誉。 :)

标签: c# wpf windows-8 microsoft-metro windows-runtime


【解决方案1】:

此网页可能会有所帮助:http://blog.jerrynixon.com/2012/06/windows-8-how-to-read-files-in-winrt.html

相关代码:

public string CurrentFileBuffer
{
    get; private set;
}

public async void ReadTextFile(string Path)
{
    var folder = Package.Current.InstalledLocation;
    var file = await folder.GetFileAsync(Path);
    var read = await FileIO.ReadTextAsync(file);
    CurrentFileBuffer = read;
}

【讨论】:

  • 谢谢,终于有人真正阅读了我的问题。这让我很难过。如果您愿意,可以复制该链接中的一些代码以帮助未来的访问者。
  • 我愿意,但奇怪的是,代码是位图中的,而不是可选择的文本。 :(
  • 这是一个很大的帮助。我已经绊倒了几天寻找这个。谢谢。
【解决方案2】:

Windows.Storage.FileIO 有一堆帮助/实用程序方法,它们在一行代码中完成这项工作,而不是使用 StorageIO 接口和类。

例如

ReadLineAsync()
ReadTextAsync()
WriteLineAsync()
WriteTextAsync()

【讨论】:

    【解决方案3】:

    您可以通过以下方式获取您的文件:

    StorageFile file3 = await StorageFile.GetFileFromPathAsync(@"C:\myFile.txt");
    

    【讨论】:

      【解决方案4】:

      您可以像这样使用FileIO 类。

      public async void Read(IStorageFile file)
      {
          var lines = await FileIO.ReadLinesAsync(file);
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多