簡體   English   中英

C#如何在不使用Directory.GetFiles()方法的情況下遍歷文件列表

[英]C# How to iterate through a list of files without using Directory.GetFiles() method

我有幾個將照片上傳到ftp服務器的安全攝像機。 這些凸輪中的某些凸輪在新的一天開始時以“ yyyymmdd”格式方便地創建子文件夾。 這很棒,並且可以在特定的日期輕松維護/刪除舊照片。 其他攝像頭不是很好,只是將圖片轉儲到一個巨大的文件夾中,因此很難刪除。

因此,我正在編寫一個C#Windows窗體程序,以使用FolderBrowserDialog轉到特定文件夾(源文件夾),並且我也使用FBD命名目標文件夾。 我正在使用標准過程,使用通過Directory.GetFiles()方法填充的字符串數組遍歷文件列表。 我使用文件的創建日期創建一個子文件夾(如果不存在)。 無論哪種情況,我都將文件移動到基​​於該日期的子文件夾。 在測試少量文件時,它的效果很好。

現在,我准備針對真實數據進行測試,並且我擔心某些文件夾中有成千上萬個文件,因此我將遇到很多內存問題和其他問題。 字符串數組如何處理如此大量的數據? 注意一個文件夾有超過28,000張圖片。 字符串數組可以處理這么多的FileInfo對象嗎?

那么我的問題是,如何在不使用字符串數組和Directory.GetFiles()方法的情況下遍歷給定文件夾中的文件列表? 盡管我確實想在Windows窗體環境中使用c#,但我很開放。 我有一個附加功能,可以刪除早於給定日期的照片,而不用移動它們。

非常感謝!

數千個文件名就可以了。 您可能會遇到數以百萬計的問題,但對於C#而言,數以千計不是什么大問題。 您可能會因為NTFS的工作方式而遇到性能問題,但是如果是這樣,則在C#中您將無能為力。 這是文件系統固有的問題。

但是,如果您真的想選擇此選項,則可以使用Directory.EnumerateFileSystemInfos()來做得更好。 GetFiles()此方法有兩個好處:

  1. 它在一個磁盤訪問中而不是兩個磁盤中加載文件名和創建日期。
  2. 它使您可以使用IEnumerable而不是數組,從而一次只需要一個文件記錄的內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM