2013-12-09 3 views
0

Windows 탐색기를 사용하여 연결할 수있는 FTP 서버에 수천 개의 파일이 있습니다. 날마다, 저녁 동안 나는 오늘 (변경된) 파일을 찾아서 그들의 이름을 가져야한다. 매개 변수 (날짜)를 사용하여 EXE를 실행하는 시각적 기본 배치 응용 프로그램을 개발하고 싶습니다.이 파일의 이름 목록을 가져와야합니다.오늘 업데이트 된 파일 목록을 가져 오는 방법은 무엇입니까? .NET

source = "\\ftp_my\Upload\" 
searchfor = "*" 
Dim dirs As String() = Directory.GetFiles(source, searchfor) 
For Each file In dirs 
    fileinfo = New FileInfo(file) 
    If (fileinfo.LastWriteTime >= DateAdd(DateInterval.Day, -1, Date.Today)) Then 
     'execute my actions 
    End If 
Next 

을하지만 모든 파일을 나열하고 그 특성을 평가하는 increditable 시간이 소요 :

최근에 나는 여기에이 코드를 발견했다. 반면에, "dir"을 만들면 Excel로 내보내고 텍스트를 분할하고 수동으로 날짜/파일을 평가하면 VB보다 먼저 해당 연구를 끝내고 싶습니다!

따라서 공허한 기간 동안 DESC가 주문한 파일을 나열하는 명령이 있어야합니까?

+0

두 시나리오의 유일한 차이점은 'If' 문을 가지고 있지 않다는 것입니까? –

+1

코드에서 "내 행동 실행"은 얼마나 걸리나요? –

+0

제 조치는 파일 이름과 날짜를 C : \ TEMP 폴더에 씁니다. – Gustavo

답변

2

나는 당신의 반복을 늦출 수있는 것으로 나타났습니다 몇 가지.

fileinfo 개체 모음 대신 각 파일 이름을 fileinfo 개체로 캐스팅합니다.

각 파일에 대해 한 번 계산하는 대신 대상 날짜를 계산합니다. 여기

은 5 초 미만에 매핑 된 네트워크 드라이브에 1000 개 파일을 찾을 수 LINQ (최악의 경우)를 사용하여 원하는 작업을 수행하는 방법이다 :

Dim source = New DirectoryInfo("\\ftp_my\Upload\") 
    Dim searchfor = "*" 
    Dim TargetDate = DateAdd(DateInterval.Day, -1, Date.Today) 
    Dim dirs = (From f As FileInfo In source.GetFiles(searchfor) 
       Where f.CreationTime >= TargetDate 
       Select f).ToList 

DIRS는 모두에서는 FileInfo가 포함됩니다 대상으로하려는 각 파일의 개체

dir을 반복하고 각 파일에 대한 작업을 완료하는 데 시간이 오래 걸리는 경우 시간이 소비되는 위치를 알려주고 해당 코드를 살펴보고 시간을 줄이기 위해 최적화를 시작할 수 있습니다.

+0

글쎄 tinstaafl, 나는 당신의 제안을 시도하고 해결책을 사용하여 4300 파일을 나열하면 36 분이 남았습니다 - 이것은 이전 것과 많이 다르지 않습니다. Peharps 문제는 네트워크 연결입니다. 그런 기본적인 정보가 왜 그런지 이해가 안됩니다. 또한 내가 취하는 "조치"는 파일 이름을 c : \ temp에 쓰는 것입니다. 따라서 문제가되지 않아야합니다. – Gustavo

+0

또한 _Here는 매핑 된 네트워크 드라이브의 1000 개 파일 (최악의 시나리오)을 찾는 LINQ를 사용하여 5 초 이내에 수행 할 수있는 방법입니다. _ 사용중인 서비스 계정이 네트워크 드라이브를 만들 수 없으며, 따라서 ** ftp_asd \ Upload **를 사용해야합니다. 물론 올바른 주소를 게시해서는 안된다는 것을 알고 있습니다. – Gustavo

+0

예. 이 정보는 내 결과가 어떤 상황에 있는지 보여주기위한 것입니다. 네트워크를 통해 파일에 액세스하고 있으므로 비슷한 결과를 얻을 수 있어야합니다. 네트워크에 문제가있는 것 같습니다. 처리량, 너무 많은 데이터를 전송하는 시간을 계산하여 다른 사이트와의 데이터 전송과 비교해보십시오. – tinstaafl

관련 문제