我怎樣才能為今天和明天創建的檔案添加檔案創建日期過濾器?
這部分不起作用,我需要添加今天和明天創建的檔案
.Where(Function(file) New FileInfo(file).CreationTime.Date = DateTime.Today.Date)Dim pdfList As String() = Directory.GetFiles(SourceDir, "*. PDF").Where(Function(file) New FileInfo(file). CreationTime.Date = DateTime.Today.Date)
For Each f As String In pdfList
'從檔案名中洗掉路徑。
Dim fName As String = f.Substring(SourceDir.Length 1)
' 使用Path.Combine方法將檔案名安全地附加到路徑上。
' 如果目標檔案已經存在,將被覆寫。
File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), True)
下一步。
uj5u.com熱心網友回復:
Dim folder As New DirectoryInfo(sourceFolderPath)
Dim files = folder.EnumerateFiles("*.pdf") 。 Where(Function(fi) fi.CreationTime.Date = Date.Today)
For Each file In files
file.CopyTo(Path.Combine(backupFolderPath, file.Name))
Next
這里有幾件事情需要注意:
我們正在創建一個
。
DirectoryInfo并使用它來獲取FileInfo物件。鑒于你正在為每個檔案創建一個FileInfo,不這樣做是很愚蠢的。那個FileInfo物件給你提供了創建時間、檔案名(沒有檔案夾路徑)和復制檔案的方法。
EnumerateFiles而不是GetFiles。后者回傳一個包含所有檔案的陣列,但在這種情況下,我們并不想要所有檔案。如果你要過濾,那么列舉是更好的,因為它逐一獲取每個檔案,處理一個檔案并在獲取下一個檔案之前丟棄它。這樣更有效率。在這種情況下,我們甚至沒有呼叫ToArray或ToList,所以直到回圈時才真正檢索到檔案,然后它們被逐一檢索和處理。
Date.Today.Date是沒有意義的。Today已經將時間歸零了。在內部,Date.Today使用Date.Now.Date.轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/308301.html
標籤:
