2012-04-17 180 views
4

當我嘗試將文件的內容保存到fileStream fs中時,會出現operation not permitted on IsolatedStorageFileStream錯誤。在IsolatedStorageFileStream錯誤中不允許操作

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

爲什麼添加內部using (var file = appStorage.OpenFile(fileName, FileMode.Open))

對我來說,問題在於你打開一個流來閱讀文件,然後打開另一個文件,而不關閉前一個!

如果你刪除該行(似乎沒有做任何事情)它應該工作正常。

呵呵,fs.ToString()只會給你類型名稱,而不是文件內容;要讀取該文件,請使用StreamReaderfs

+1

OMG!非常感謝Pedro Lamas。問題出在'使用(var file = appStorage.OpenFile(fileName,FileMode.Open))' – 2012-04-18 03:13:43

+0

謝謝!我有確切的問題,你解決了它!在開始與另一個工作之前,我必須關閉文件流 – 2012-12-07 07:22:41

1

當一個流(或讀取器或其他流)打開隔離的存儲文件時,並且在第一個流(或讀取器或其他)尚未放棄該文件時被另一個對象訪問時,會始終出現此錯誤。在您訪問獨立存儲文件的所有地方仔細檢查您的代碼,並確保在其他內容訪問之前關閉每個文件。佩德羅喇嘛對於這個特例是正確的,我只是想提供一些一般性的反饋。如果您在谷歌上搜索「IsolatedStorageFileStream錯誤操作不允許」的問題和答案,您會看到趨勢。錯誤信息可能更具描述性。

0

試試這個辦法

using (var isf = IsolatedStorageFile.GetUserStoreForApplication()) 
       { 
        if (IsolatedStorageFile.IsEnabled) 
        { 
         if (isf.FileExists(localFileName)) 
         { 
          using (var isfs = new IsolatedStorageFileStream(localFileName, FileMode.Open, isf)) 
          { 
           using (var sr = new StreamReader(isfs)) 
           { 
            var data = sr.ReadToEnd(); 
            if (data != null) 
            { 
             ... 
相關問題