我在做一些非常简单的事情时遇到了很多麻烦:从 C# Win8 Metro 风格应用程序中的文件中获取任意数据。
给定一个引用现有文件的 StorageFile 对象,我需要能够查找任意位置,然后读取任意值(各种大小的整数、字符串、字节、字节数组等)。我试过的都没有用。
例如,我获得了一个IRandomAccessStreamusing StorageFile.OpenAsync,用它构造了一个DataReader,并用于DataReader.ReadByte读取文件的第一个字节。但ReadByte抛出异常(“该操作试图访问有效范围之外的数据”)。
我对 C# 和 .NET 都比较陌生,这可能无济于事。
有人可以概述如何做到这一点吗?
我被要求提供一个代码示例。这是我上面描述的,许多不同的尝试之一。这些甚至可能不是正确的类型。f是一个StorageFile引用现有文件的有效文件,由用户选择(因此没有权限问题)。
public async void Read(StorageFile f)
{
  IRandomAccessStream s = await f.OpenAsynch(FileAccessMode.Read);
  DataReader r = new DataReader(s);
  Byte b = r.ReadByte();
}
该ReadByte调用是引发异常的调用。