2012-05-04 4 views
7

FileSystemWatcher.OnDeleted 이벤트를 사용하면 파일이 삭제되기 전에 액세스 할 수 있습니까?삭제하기 전에 파일에 액세스하십시오.

문서 자체에 대한 일부 데이터를 메타 데이터에 저장하고 있으며 정보가 삭제되기 전에 해당 정보가 필요합니다.

가능하면 FileSystemWatcher의 유무에 관계없이이를 수행하는 방법은 무엇입니까?

업데이트 : //

나는 파일이 삭제 될 때 내가 그것을 액세스 할 수있는 파일에 데이터를 저장하는 나쁜 것을 깨달았다.

솔루션 : 파일이 생성 될 때 로컬 데이터베이스의 데이터 (sqlite가/XML 또는 같은)을 저장하는 내 응용 프로그램을 다시는 내가 전체 경로와 이름을 얻을로/이름/업데이트 /는 것 삭제 파일에 대한 데이터베이스 레코드를 쉽게 갱신 할 수 있습니다.

아이디어와 제안에 감사드립니다.

+0

나는 일단 파일이 삭제되면 이벤트가 실행되기 때문에 아무도 할 수 없다고 말하고 싶다. FSW가 완료된 후에야 FSW가 이벤트를 알 수 있다고 생각하지 않습니다. 사전 삭제가 해고 캡처되어야 함을 의미하므로 파일에 대한 잠금을 만들 수 있습니다. –

+0

그냥'FileSystemWatcher'로는 가능하지 않다고 생각합니다. 나는 Windows가 하위 수준의 훅을 허용하는지 잘 모르겠다. (의심 스럽지만) – dlev

+0

eventhandler에서 fullname을 얻을 것이다. 이 파일을 사용하여 파일을 복원하고, 파일을 보이지 않게 만들고, 읽고, 삭제합니다. hackish하고 빠르지는 않지만 여전히 뭔가 : http://stackoverflow.com/questions/2837307/recovering-deleted-file-on-windows – nawfal

답변

2

FileSystemWatcher.OnDeleted 이벤트를 사용하면 삭제되기 전에 파일에 액세스 할 수 있습니까?

이벤트는 이전에 파일을 삭제 한 후에 발생하므로이 이벤트가 발생할 때 파일에 액세스 할 수 없습니다.

모든 아이디어 가능한 경우 어떻게 수행할까요?

나는 대신 OnChanged 이벤트를 사용합니다.이 이벤트는 파일이 변경 될 때마다 발생합니다. 기본적으로 파일이 바뀔 때마다 파일 메타 데이터를 읽습니다. 파일이 자주 업데이트되는 경우 다소 번거로울 수 있지만 파일을 제거하기 전에 최신 메타 데이터를 가질 수 있어야합니다.

+0

OnChanged가 반드시 OnDelete 앞에 발사 될 필요는 없습니다! – nawfal

+0

또한 파일이 삭제되기 전에 변경된다는 보장이 없습니다. – Aviatrix

+0

@nawfal 내 업데이트 – GETah

0
FileSystemWatcher1 = Your Main Watcher. 
FileSystemWatcher2 = RecycleBin Watcher 

If the FileSystemWatcher1 Deleted file == the FileSystemWatcher2 Created File 
{ 
    //Do what you want with the FileSystemWatcher2.FullPath 
} 
관련 문제