Как сильно разблокировать файл в c#?

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

Я столкнулся с двумя возможностями в исследовании до сих пор.

System.IO.FileStream.Unlock

и

//unlock file
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern bool UnlockFile(IntPtr handle, int offsetLow, int offsetHi);`  

Будет любой из этих двух методов работа? Если так, могли Вы обеспечивать образец, поскольку я не заставил ни один из них работать. Или, есть ли другой лучший путь?

5
задан alchemical 8 February 2010 в 23:42
поделиться

4 ответа

Спасибо за ваши решения, этот код сработал для меня:

Dim s As String = ""
Dim direc As DirectoryInfo = New DirectoryInfo("Your Directory path")

For Each fi As FileInfo In direc.GetFiles("*.vb", SearchOption.AllDirectories)
    s = File.ReadAllText(fi.FullName, System.Text.Encoding.Default)
    File.WriteAllText(fi.FullName, s, System.Text.Encoding.Unicode)
Next
-121--837686-

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

Удаление ссылок: http://www.phpro.org/examples/Get-Links-With-DOM.html

Результаты выгрузки в файл: http://www.tizag.com/phpT/filewrite.php

-121--912720-

В конце концов с помощью утилиты PSTools, кажется, работает нормально.

0
ответ дан 15 December 2019 в 06:25
поделиться

Вы должны использовать операции с файлами с задержкой, смотрите Как перемещать файлы, которые в настоящее время используются ("Переместить" включает в себя удаление в этом контексте).

UnlockFile и его друзья предназначены для операций по блокировке файловых областей, а не для операций по блокировке рукоятки файла, см. раздел Блокировка и разблокировка диапазонов байт в файлах . Надеюсь, что нет API для разблокировки заблокированной файловой ручки, что сделало бы блокировку практически удобной....

2
ответ дан 15 December 2019 в 06:25
поделиться

Я нашел вызов System.IO.FileStream.Unlock () в Reflector RedGates, и, похоже, он просто вызывает внешний вызов UnlockFile (). Методы одни и те же.

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

1
ответ дан 15 December 2019 в 06:25
поделиться

Следует использовать отложенные операции с файлами, см. Как перемещать файлы, используемые в данный момент («Переместить» включено удаление в этом контексте).

UnlockFile and friends предназначены для операций блокировки области файла, а не для блокировки дескриптора файла, см. Блокировка и разблокировка диапазонов байтов в файлах . Надеюсь, что нет API, чтобы разблокировать заблокированный дескриптор файла, который бы визуализировал блокировку довольно много useles...

-121--5086125-

Вы возвращаете friendCell, и это, очень вероятно, ноль.

Код выглядит хорошо, поэтому убедитесь, что файл Interface Builder настроен правильно. В FriendTaureViewCell.xib убедитесь, что владельцем файла является ваш контроллер табличного представления, и правильно установите ячейку как розетку для friendCell (которую я предполагаю как UITableViewCell).

-121--1140707-

Можно попытаться выполнить вызов P/Invoke для MeyFileEx и MOVEFILE _ DELAY _ UNTIL _ REBOOT :

Система не перемещает файл до перезапуска операционной системы. Система перемещает файл сразу после выполнения команды AUTOCHK, но перед созданием файлов подкачки. Следовательно, этот параметр позволяет функции удалять файлы подкачки из предыдущих запусков.

0
ответ дан 15 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: