![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
ddll |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 28.1.2011 Репутация: нет Всего: нет |
Копирую один фаил (офисовский документ) с одной директори в другую.
В этот момент файл открыт другой програмой и выскакивает ошибка невозможно скопровать фаил занят другим процесом. я использую просто File.Copy(s1, s2, true); Я понимаю что можно отлавливать exeptions но это для меня плохо тк с файлом человек может работать с файлом целый день. Задача скопировать этот занятый фаил пусть даже непоследнюю версию. Всем заранее спасибо за помошь и ответы! Это сообщение отредактировал(а) ddll - 22.6.2011, 10:32 |
|||
|
||||
YurIOs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.6.2011 Где: Ukraine Репутация: нет Всего: 1 |
Можно побайтно скопировать файл с помощью подклассов Stream. Для создания считывающего потока нужно использовать перегруженный метод File.Open() который позволяет открыть файл занятый другим процессом, для этого нужно использовать значение ReadWrite перечисления FileShare
Но при этом нет гарантии что тот другой процесс не начал запись в файл, или уже ее полностью завершил, поэтому копия может быть поврежденной. Для файлов малых размеров метод подойдет, так как скорость копирования где-то 1 Мб/секунду. Есть идея как ускорить, завтра попробую реализовать. Это сообщение отредактировал(а) YurIOs - 29.6.2011, 00:40 |
|||
|
||||
YurIOs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.6.2011 Где: Ukraine Репутация: нет Всего: 1 |
А вот и обещанный мной метод по шустрее.Ускорение достигаться за счет буфера.
При размере буфера в 1024 байт, скорость копирования файла больше 4 Гб на моем РС составляет 39 Мб/секунду.
Здесь также используется перегруженный метод File.Open() с использованием перечисления FileShare.ReadWrite |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |