2012-04-17 4 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()은 파일 내용이 아닌 유형 이름 만 제공합니다. 파일을 읽으려면 fs과 함께 StreamReader을 사용하십시오.

+1

OMG를보십시오! 페드로 라마 감사합니다. 문제는'using (var file = appStorage.OpenFile (fileName, FileMode.Open)) '입니다. –

+0

감사합니다! 나는 정확한 문제가 있었고 당신은 그것을 풀었다! 다른 파일과 작업을 시작하기 전에 파일 스트림을 닫아야했습니다. –

1

이 오류는 하나의 스트림 (또는 독자 또는 다른 사람)이 격리 된 저장소 파일을 열었을 때 일관되게 발생하며 첫 번째 스트림 (또는 독자 또는 다른 사람)이 파일을 아직 보류하지 않은 상태에서 다른 개체가 액세스하는 경우 일관되게 발생합니다. 격리 된 저장소 파일에 액세스하는 모든 위치에서 코드를주의 깊게 살펴보고 다른 파일에 액세스하기 전에 각 파일을 닫아야합니다. Pedro Lamas는이 특별한 경우에 맞습니다. 나는 단지 몇 가지 일반적인 피드백을 제공하고자했습니다. Google에서 "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) 
            { 
             ... 
관련 문제