alhimik, Давай определимся с условиями. Opera 9.52 хранит кеш совсем не во временном каталоге системы, а по умолчанию в %LOCALAPPDATA%\Opera\Opera*\profile\cache4 (Opera* — имя каталога установки). Посмотреть и изменить можно введя в адресной строке opera:config#UserPrefs|CacheDirectory4. Плюс файлы называются opr????? и не блокируются. Т.е. скопировать можно вот так:
Код | string filename = @"c:\Users\Admin\AppData\Local\Opera\Opera\profile\cache4\opr12345"; string dest_dir = @"e:\Downloads"; File.Copy(filename, Path.ChangeExtension(Path.Combine(dest_dir, Path.GetFileName(filename)), "flv")); |
По коду: ты пытаешься открыть файл в режиме FileShare.None, но так как он уже кем-то открыт, то система не может выполнить твое требование эксклюзивного доступа, даже если файл доступен для чтения. Вот пример:
Код | // открываем файл для записи, но разрешаем чтение FileStream f = new FileStream(@"e:\1.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.Read); // пытаемся открыть эксклюзивно - не выйдет //FileStream fs = new FileStream(@"e:\1.txt", FileMode.Open, FileAccess.Read, FileShare.None); // пытаемся открыть на чтение, но получаем ошибку, т.к. файл уже открыт на запись, т.е. маски доступа не совпадают //FileStream fs = new FileStream(@"e:\1.txt", FileMode.Open, FileAccess.Read, FileShare.Read); // открываем на чтение, учитывая, что кто-то туда уже пишет, но разрешил чтение FileStream fs = new FileStream(@"e:\1.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); fs.Close(); f.Close(); |
Ну а если файл действительно заблокирован, то насколько я знаю, средствами .NET прочитать его будет сложно. http://www.wasm.ru/article.php?article=lockfileswork |