2010-09-03 3 views
0

Я хочу взять файл, который хранится уже в изолированном хранилище, и скопировать его, где-то на диске.Как получить файл и вывести его из изолированного хранилища?

IsolatedStorageFile.CopyFile("storedFile.txt","c:\temp") 

Это не работает. Выбрасывает IsolationStorageException и говорит: «Операция не разрешена»

+0

Если операция не разрешена, вы не можете этого сделать. – SLaks

+1

В Silverlight или на рабочем столе .NET приложение? – dthorpe

ответ

0

Я ничего не вижу в документах, кроме this, в которых говорится, что «некоторые операции не разрешены», но точно не говорит. Я предполагаю, что он не хочет, чтобы вы копировали из изолированного хранилища в произвольные места на диске. Документы указывают, что назначение не может быть каталогом, но даже если вы исправите это, вы все равно получите ту же ошибку.

Как обходной путь, вы можете открыть файл, прочитать его содержимое и записать их в другой файл.

using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForAssembly()) 
{ 
    //write sample file 
    using (Stream fs = new IsolatedStorageFileStream("test.txt", FileMode.Create, store)) 
    { 
     StreamWriter w = new StreamWriter(fs); 
     w.WriteLine("test"); 
     w.Flush(); 
    } 

    //the following line will crash... 
    //store.CopyFile("test.txt", @"c:\test2.txt"); 

    //open the file backup, read its contents, write them back out to 
    //your new file. 
    using (IsolatedStorageFileStream ifs = store.OpenFile("test.txt", FileMode.Open)) 
    { 
     StreamReader reader = new StreamReader(ifs); 
     string contents = reader.ReadToEnd(); 
     using (StreamWriter sw = new StreamWriter("nonisostorage.txt")) 
     { 
      sw.Write(contents); 
     } 
    } 
}