我在做一些非常简单的事情时遇到了很多麻烦:从 C# Win8 Metro 风格应用程序中的文件中获取任意数据。
给定一个引用现有文件的 StorageFile 对象,我需要能够查找任意位置,然后读取任意值(各种大小的整数、字符串、字节、字节数组等)。我试过的都没有用。
例如,我获得了一个IRandomAccessStream
using 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
调用是引发异常的调用。