2

Windows 8アプリに問題があり、開いたファイルからSteamを取得しています。Windows 8でファイルの読み取り/書き込みを行う方法は他にもありますが、標準ストリームを引き出すことができるようにするために、できるかどうかを確認しようとしています。これまでのところ良くありません。問題は、System.IO.BufferedStreamがWindows8アプリのSystem.IOの一部ではないことです。したがって、次のコード:

    (MemoryStream)(await (await installedLocation.GetFileAsync("SOMEFILE")).OpenStreamForWriteAsync());

凝縮されたコードについてお詫びします。上記のコードは、前述の例外をスローします。繰り返しになりますが、問題はバッファリングされたストリームを作成できないことです。これを回避する方法があるのだろうかと思いました。

どんな助けでも大歓迎です!

4

3 に答える 3

1

そうです、あなたは にキャストしていますがMemoryStream、それは ではありませんMemoryStream存在するSystem.IO.BufferedStreamようです-それは公開されていません。これは、気にする必要のない実装の詳細です。それは1つではないので、しかしにキャストすることはできません。MemoryStream

キャストしている理由はまったく明らかではありませんが、代わりMemoryStreamに使用できるはずです。が必要な場合はStream、自分で作成してデータをコピーする必要があります。MemoryStream

于 2012-12-23T20:20:13.020 に答える
0

これが私がWindows8でファイルを読み書きするために使用するコードです。それは機能し、それがあなたにも役立つことを願っています。

    // Read from a file line by line
    public async Task ReadFile()
    {
        try
        {
            // get the file
            StorageFile myStorageFile = await localFolder.GetFileAsync("MyDocument.txt");
            var readThis = await FileIO.ReadLinesAsync(myStorageFile);
            foreach (var line in readThis)
            {
                String myStringLine = line;
            }
            Debug.WriteLine("File read successfully.");
        }
        catch(FileNotFoundException)
        {              
        }
    }
    // Write to a file line by line
    public async void SaveFile()
    {
        try
        {
            // set storage file
            StorageFile myStorageFile = await localFolder.CreateFileAsync("MyDocument.txt", CreationCollisionOption.ReplaceExisting);
            List<String> myDataLineList = new List<string>();
            await FileIO.WriteLinesAsync(myStorageFile, myDataLineList);
            Debug.WriteLine("File saved successfully.");
        }
        catch(FileNotFoundException)
        {              
        }
    }
于 2012-12-23T20:28:25.550 に答える
0

ドキュメントによると、返されStreamた .

http://msdn.microsoft.com/en-us/library/hh582147.aspx

にキャストする理由はありMemoryStreamますか?

于 2012-12-23T20:19:44.333 に答える