2012-04-17 140 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) 
            { 
             ... 
相关问题