我在C中使用dirent & stat獲取了文件和文件夾的列表,但它們不是我想要的順序。我希望它會先列出目錄然後再列出文件。 例如:對文件和文件夾重新排序
.
..
[dir1]
[dir2]
[file1]
[file2]
有沒有辦法用的dirent做到這一點?或者我不想手動排列輸出列表。 謝謝。
我在C中使用dirent & stat獲取了文件和文件夾的列表,但它們不是我想要的順序。我希望它會先列出目錄然後再列出文件。 例如:對文件和文件夾重新排序
.
..
[dir1]
[dir2]
[file1]
[file2]
有沒有辦法用的dirent做到這一點?或者我不想手動排列輸出列表。 謝謝。
在目錄中進行兩次通過,第一次只顯示目錄,第二次只顯示文件。如果你只是想要dirs-then-files,我只會這樣做;如果您有一些詳細的排序標準,我會將這些條目存儲在一個數組中,並將其排序爲一個自定義排序函數。
您需要閱讀並排序。或者使用不同的庫函數來完成它。
如果您使用opendir/readdir,但您可以使用scandir(3)(假設您在* nix系統上),如果您想要對所有目錄條目進行排序,您將不得不對其進行排序。
您可以維護兩個數據結構,一個用於目錄,一個用於文件。 一旦你開始用dirent讀取目錄,插入相應的結構運行時。
將兩個列表最後分別與目錄和文件合併。 該方法將一次完成O(N),合併將只需要一條O(1)的指令。