簡體   English   中英

檢查路徑中的所有文件大小(C++)

[英]Check all files sizes in a path (C++)

我正在嘗試循環,以便我的程序可以獲得文件夾中所有文件的權重,如果其中任何一個的權重等於 X,它將執行一個操作,我需要知道如何像這樣循環,我有一個函數可以知道文件大小

std::ifstream::pos_type filesize(const char* filename)
{
    std::ifstream in(filename, std::ifstream::ate | std::ifstream::binary);
    return in.tellg();
}

這是一個簡短的示例程序,演示了如何使用 C++17 的<filesystem>庫來迭代目錄。 如果您的編譯器是最新的,它應該毫無問題地支持 C++17。

#include <filesystem>
#include <iostream>

int main() {
  namespace fs = std::filesystem;

  fs::path pwd("");  // Current directory program was executed from
  pwd = fs::absolute(pwd);

  for (auto& i : fs::directory_iterator(pwd)) {
    try {
      if (fs::file_size(i.path()) / 1024 > 2048) {
        std::cout << i.path() << " is larger than 2MB\n";
      }
    } catch (fs::filesystem_error& e) {
      std::cerr << e.what() << '\n';
    }
  }
}

這是目錄的內容:

.
├── a.out
├── fiveKB
├── fourMB
├── main.cpp
└── oneMB

0 directories, 5 files

以及有關文件的信息:

drwxr-xr-x   7 user  staff   224B Jul 29 22:11 ./
drwxr-xr-x  13 user  staff   416B Jul 29 21:59 ../
-rwxr-xr-x   1 user  staff    47K Jul 29 22:10 a.out*
-rw-r--r--   1 user  staff   5.0K Jul 29 21:58 fiveKB
-rw-r--r--   1 user  staff   4.0M Jul 29 21:59 fourMB
-rw-r--r--   1 user  staff   450B Jul 29 22:11 main.cpp
-rw-r--r--   1 user  staff   1.0M Jul 29 21:59 oneMB

最后,output:
"/Users/user/Documents/tmp/test/fourMB" is larger than 2MB

暫無
暫無

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

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