4

operation not permitted on IsolatedStorageFileStream当我尝试将文件的内容保存在 fileStream fs 中时,它会出错。

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()这只会给你类型名称,而不是文件内容;要读取文件,请将 aStreamReaderfs.

于 2012-04-18T00:24:18.023 回答
1

当一个流(或读取器或其他)打开隔离存储文件并且正在由另一个对象访问而第一个流(或读取器或其他)尚未放弃文件时,此错误始终发生。在您访问隔离存储文件的所有地方仔细检查您的代码,并确保在其他人访问它之前关闭每个文件。Pedro Lamas 对于这种特殊情况是正确的,我只是想提供一些一般性的反馈。如果您在 Google 上搜索“Operation not allowed on IsolatedStorageFileStream 错误”问题和答案,您会看到趋势。不过,错误消息可能更具描述性。

于 2012-04-18T02:30:12.393 回答
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)
                                    {
                                       ...
于 2015-02-24T17:52:22.340 回答