回答
從標籤中,我假設你想在符合POSIX的系統中做到這一點。在這種情況下的文件夾中列出文件的代碼片段是這樣的:
#include <dirent.h>
#include <sys/types.h>
#include <stdio.h>
DIR* dp;
struct dirent* ep;
char* path = "/home/mydir";
dp = opendir(path);
if (dp != NULL)
{
printf("Dir content:\n");
while(ep = readdir(dp))
{
printf("%s\n", ep->d_name);
}
}
closedir(dp);
要檢查文件創建或修改時間,使用stat
(男子2 STAT)。要刪除文件,只需使用功能remove(const char* path)
我不完全確定刪除開放目錄中的文件是安全的(因爲掃描的目錄是在掃描時更新)。我的建議是兩次完成:第一次掃描,找到要刪除的文件,第二次刪除它們。 –
這是非常好的評論。但是,在這種情況下,您必須在刪除之前完成掃描,因爲OP要刪除最舊的文件(您必須檢查所有文件才能找到最早的文件)。 – Patryk
在Linux(以及任何POSIX系統)上,您可以通過調用opendir()
/readdir()
/closedir()
來閱讀目錄。然後,您可以在每個目錄條目上調用stat()
以確定它是否是文件,以及它的訪問/修改/狀態更改時間。
如果您對「最老」的定義取決於文件的創建時間,那麼您就不穩固了 - 傳統上UNIX並沒有記錄創建時間。在Linux上,一些最新的文件系統通過擴展屬性file.crtime
(您使用getxattr()
從sys/xattr.h
訪問)提供擴展屬性,但您必須處理該屬性不存在的常見情況。
- 1. 從目錄中刪除圖像,並從目錄中刪除它們的鏈接
- 2. PHP來列出目錄中的文件,並鏈接到它們
- 3. 在列表框中列出目錄文件並將它們打開
- 4. 從列表中刪除項目不從RecyclerView中刪除它們?
- 5. 刪除文件並從列表中刪除它的名字
- 6. 目錄中的PHP列表文件,並帶有刪除選項
- 7. 遍歷目錄中的文件,並把它們合併蟒蛇
- 8. PHP列出目錄,並刪除..和
- 9. PHP - 通過超鏈接刪除目錄中列出的文件
- 10. 清除NAnt中的所有子目錄但不刪除它們
- 11. 在一個目錄中刪除數百萬個文件而不一次全部列出它們
- 12. 多文件上傳並將它們存儲在目錄中
- 13. 轉換文件並將它們放在另一個目錄中
- 14. 刪除文件及其父目錄,如果它們爲空。 (Java)
- 15. 刪除舊文件並登錄它
- 16. 列出並刪除檔案中的目錄
- 17. 遞歸:檢查目錄中的文件並閱讀它們
- 18. 遍歷給定目錄中的python文件並導入它們?
- 19. 比較嵌套在列表中的類似項目,並將它們刪除
- 20. jquery從外部文件中刪除標籤並保存它們
- 21. 提示的文件/目錄中刪除
- 22. 如何刪除目錄中的文件
- 23. 刪除目錄中的所有文件
- 24. 刪除數據目錄中的文件
- 25. 刪除目錄中的空文件夾
- 26. 列出文件並使用bash在菜單中顯示它們
- 27. 在一個目錄中找到一個特定的文件並刪除目錄
- 28. 刪除不在包含目錄名稱列表的文件中的目錄
- 29. Bash:在文本文件中列出的文件循環並移動它們
- 30. 創建目錄並最終刪除它
Plain C沒有任何目錄的概念,因此您需要指定您想要執行此操作的操作系統。 – caf
Linux 2.6.x內核 – Kitcha
@caf:實際上,純C(這似乎暗示了編程語言本身)甚至沒有關於文件或其他任何事物的概念。 C由大約32個關鍵字組成,幾個操作員就是這樣。所有這些文件,目錄等概念都是在庫中定義的。所以如果你不是指語言定義本身,那麼問題是標準C庫中定義的目錄是什麼?答案是肯定的。特別是dirent.h接口到OS的目錄概念是一個X.Open和POSIX.1標準。 –