Как получить файл и переместить его из изолированного хранилища? - PullRequest
0 голосов
/ 03 сентября 2010

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

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

Это не работает.Выдает исключение IsolatedStorageException и говорит: «Операция не разрешена»

1 Ответ

0 голосов
/ 03 сентября 2010

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

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

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);
        }
    }
}
...