4

operation not permitted on IsolatedStorageFileStreamファイルの内容をfileStreamfsに保存しようとすると、エラーが発生します。

var appStorage = IsolatedStorageFile.GetUserStoreForApplication();
string[] fileList = appStorage.GetFileNames();

foreach (string fileName in fileList)
    {
       using (var file = appStorage.OpenFile(fileName, FileMode.Open))
       {
           if (fileName != "__ApplicationSettings")
           {
               var fs = new IsolatedStorageFileStream(fileName, FileMode.Open, FileAccess.Read, appStorage);
               string abc = fs.ToString();
               meTextBlock.Text = abc;
               //MemoryStream ms = appStorage.OpenFile(fileName, FileMode.Open, FileAccess.Read);

               clientUpload.UploadAsync(SkyDriveFolderId, fileName, fs);
          }
     }
}
4

3 に答える 3

4

なぜインナーを追加したのusing (var file = appStorage.OpenFile(fileName, FileMode.Open))ですか?

問題は、ファイルを読み取るためにストリームを開いてから、前のストリームを閉じずに別のストリームを開くことです!

その行を削除すると(そこでは何もしていないようです)、正常に動作するはずです。

ああ、fs.ToString()ファイルの内容ではなく、タイプ名のみが取得されます。ファイルを読み取るには、 と を使用しStreamReaderますfs

于 2012-04-18T00:24:18.023 に答える
1

このエラーは、分離ストレージ ファイルが 1 つのストリーム (またはリーダーなど) によって開かれ、最初のストリーム (またはリーダーなど) がまだファイルを放棄していない間に別のオブジェクトによってアクセスされている場合に一貫して発生します。分離されたストレージ ファイルにアクセスするすべての場所でコードを注意深く調べ、他の何かがアクセスする前に各ファイルを閉じるようにしてください。Pedro Lamas はこの特定のケースについては正しいです。一般的なフィードバックを提供したかっただけです。「IsolatedStorageFileStreamエラーで許可されていない操作」の質問と回答をグーグルで検索すると、傾向がわかります。ただし、エラーメッセージはより説明的である可能性があります。

于 2012-04-18T02:30:12.393 に答える