최근에 FileSystemWatcher
으로 작업하기 시작했습니다. 특정 디렉토리를 모니터해야한다는 요구 사항이 있으며 그 디렉토리에 추가 된 새 파일은 MD5 체크섬을 가져 와서 콘솔에 표시합니다. 그래서 적절한 이벤트 핸들러FileSystemWatcher - 만든 파일을 읽을 수 없습니다.
watcher.Created += new FileSystemEventHandler(OnCreated);
을 추가 한 다음 첫 번째 파일은 그러나 곧 다른 파일이 만들어집니다로 작성 될 때 완벽하게 잘 작동
private static void OnCreated(object sender, FileSystemEventArgs e)
{
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead("C:\\Test\\Uploads\\"+ e.Name))
{
byte[] checkSum = md5.ComputeHash(stream);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < checkSum.Length; i++)
{
sb.Append(checkSum[i].ToString());
}
Console.WriteLine(sb.ToString());
}
}
}
처럼
OnCreated
보인다 디렉토리 다음 오류가 발생합니다.
추가 정보 : 프로세스가 'C : \ Test \ Uploads \ New Text Document (2) .txt'파일에 액세스 할 수 없습니다. b ecause가 다른 프로세스에 의해 사용되는
오류를 던지고 선은
using (var stream = File.OpenRead("C:\\Test\\Uploads\\"+ e.Name))
입니다 또한 stream.Dispose();
을 시도했지만 같은 문제가했습니다. 아무도 내가 잘못 가고 있는지 알 수 있습니까? 모든 도움과 지원에 미리 감사드립니다.
아마 * 다른 프로세스에서 사용 중일 수 있습니다 - 아마도 파일이 작성/작성되지 않았습니까? – Plutonix
e.Name은 항상 새로 생성 된 파일의 이름을 포함합니까? – silent
@silent 네, 항상 새로 만든 파일의 이름이 – Code