Господа,
Не знает ли кто, возможно ли открыть файл на чтение таким образом, чтобы другой поток мог его в это же время удалить?
Т.е. чтобы можно было делать что-то вроде следующего:
---
FileStream file = File.Open( fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ):
File.Delete(fileName );
---
Здравствуйте, <Аноним>, Вы писали:
А>Господа, А>Не знает ли кто, возможно ли открыть файл на чтение таким образом, чтобы другой поток мог его в это же время удалить?
А>Т.е. чтобы можно было делать что-то вроде следующего: А>--- А>FileStream file = File.Open( fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ): А>File.Delete(fileName ); А>---
Имхо единственный способ — сразу сохранить всё содержимое файла в память и закрыть его, а потом уж работать с сохранёнными данными. Иначе никак, есесно.
Открытие файла без блокировки на удаление
От:
Аноним
Дата:
30.05.05 11:04
Оценка:
Под NTFS можно попробовать создать ссылку на интересующий файл при помощи CreateHardLink.
Затем открыть созданную ссылку как файл для чтения.
Есть шанс, что исходный файл при этом можно удалить.
Здравствуйте, erigami, Вы писали:
E>Под NTFS можно попробовать создать ссылку на интересующий файл при помощи CreateHardLink. E>Затем открыть созданную ссылку как файл для чтения. E>Есть шанс, что исходный файл при этом можно удалить.
К сожалению, не проходит. Хотя мысль была классная
Дело в том, что нужно написать тулзу, которая постоянно "висит" над каталогом, и анализирует файлы в нём. Но тулза не должна каким-либо образом блокировать файлы. Проблемы — с удаленией файлов.
B>Дело в том, что нужно написать тулзу, которая постоянно "висит" над каталогом, и анализирует файлы в нём. Но тулза не должна каким-либо образом блокировать файлы. Проблемы — с удаленией файлов.
так для этого не надо файлы открывать
смотри функцию
ReadDirectoryChanges и все что вместе с ней
Здравствуйте, Аноним, Вы писали:
А>Господа, А>Не знает ли кто, возможно ли открыть файл на чтение таким образом, чтобы другой поток мог его в это же время удалить?
А>Т.е. чтобы можно было делать что-то вроде следующего: А>--- А>FileStream file = File.Open( fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ): А>File.Delete(fileName ); А>---
Если просто дать возможность удалить из другого потока — то FileShare.Delete.