C# Win8 Metro スタイル アプリでファイルから任意のデータを取得するという、非常に単純であるべきことを実行するのに非常に多くの問題があります。
既存のファイルを参照する StorageFile オブジェクトが与えられた場合、任意の位置をシークし、任意の値 (さまざまなサイズの整数、文字列、バイト、バイト配列など) を読み取ることができる必要があります。私が試したことは何もありません。
たとえば、IRandomAccessStream
usingを取得し、それを使用してStorageFile.OpenAsync
を構築し、ファイルの最初のバイトを読み取るためにDataReader
使用しました。DataReader.ReadByte
ただしReadByte
、例外がスローされます (「操作が有効な範囲外のデータにアクセスしようとしました」)。
私が C# と .NET の両方に比較的慣れていないことは、おそらく役に立たないでしょう。
誰かがこれを行う方法を概説できますか?
コード例を求められました。これは私が上で説明したものであり、多くの異なる試みの 1 つです。これらは正しいタイプでさえないかもしれません。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
例外をスローするものです。