2016-09-08 1 views
0

우리는 원격 대서양 횡단 삼바 공유에서 파일 목록을 얻는 프로세스를 가지고 있습니다. 이것은 자연스럽게 느린쪽에 있지만 파일 이름 만 필요로하지 않는다는 사실 때문에 더 나빠졌습니다. 업데이트를 확인하기위한 마지막 쓰기 시간이 필요합니다. 디렉토리에 꽤 많은 파일이 있습니다. 그리고 말할 수있는 한, .NET 파일 API는 각 파일을 개별적으로 요청합니다. 우리가 필요로하는 정보를보다 빨리 얻을 수있는 방법이 있습니까?배치에서 전체 디렉토리 정보를 얻는 방법

+0

다음과 같이 해보십시오. DirectoryInfo info = new DirectoryInfo ("path"); GroupBy (x => x.FullName, y => y.LastWriteTime) .ToDictionary (x => x.Key, y => y.FirstOrDefault()) 사전 dict = info.EnumerateFiles(). ; – jdweng

답변

0

나는 길을 찾고 싶다. 나는 똑같은 문제를 가지고있다. 느린 네트워크 위치에 엄청난 수의 파일이 있는데, 나는 변화를 검사해야한다.

필자가 아는 한, 파일 속성을 하나씩 질문해야합니다.

파일 당 전송되는 정보의 양은 많지 않아야합니다. 로터리 어답터 요청 - 응답 시간이 아마도 주요 문제 일 것입니다. 병렬로 여러 요청을 실행하여 상황을 도울 수 있습니다 (예 : Parallel.ForEach 사용)

1

질문에 대한 답변은 적어도 의미있는 것은 아닙니다.

코드에서 파일을 정확히 열거하는 방법은 Windows의 동일한 파일 시스템 API로 모두 바뀌기 때문에 거의 관련이 없습니다. 불행히도, 한 번의 호출로 파일 세부 정보 목록을 반환하는 함수는 없습니다 *.

그래서 아래 코드와 같이 코드 내용에 상관없이 디렉토리 내용을 열거하고 각 파일에 대해 개별적으로 특정 파일 함수를 호출합니다.

이것이 정말로 문제가된다면, 나는 탐지 로직을 파일에 더 가깝게 옮기고 앱에 주기적으로 결과를 보냅니다.

* 면책 조항 : 나는 지금까지 스택에서이 작업을 수행 한 적이 있었기 때문에 API 문서를 지금 탐색 중이므로 정확하게 여기에 새로운 기능이있을 수 있습니다.

+0

조금 더 조사해 보면, Win32 수준으로 내려 가면 나열하는 것과 동시에 정보를 가져올 수 있는데, 이는 훨씬 빠르지 만 단 한 번의 작업 만 수행하는 것은 찾을 수 없습니다. 찾고 있었어. 사람들은 Win32가 설계되었을 때 대서양 횡단 삼바 드라이브에 대해 정말로 생각하지 않고 있었다고 생각합니다. –