亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 利用c++,如何知道目錄下所有文件的大。ê幽夸洠 [打印本頁]

作者: kaisakaisa    時間: 2004-02-11 10:09
標(biāo)題: 利用c++,如何知道目錄下所有文件的大。ê幽夸洠
如何知道目錄下所有文件的大。ê幽夸洠
類似于du -k 命令,獲得目錄中所有文件的大小
謝謝
作者: huahua0459    時間: 2004-02-11 12:44
標(biāo)題: 利用c++,如何知道目錄下所有文件的大。ê幽夸洠
unsigned long dudir(char *dirname) {
  unsigned long dirsize = 0;
  DIR *dp;
  struct dirent *ep;

  dp = opendir (dirname);
  if (dp != NULL) {
      while (ep = readdir (dp)) {
          調(diào)用stat分析ep->;d_namestat是正規(guī)文件還是目錄
          如果ep->;d_name此文件是目錄則遞歸調(diào)用此函數(shù)
          dirsize += dudir(ep->;d_name);
           如果是正規(guī)文件則使用stat計算長度
          dirsize += 文件長度
        如果是其他類型則不計算?
      }
      (void) closedir (dp);
    }


   return dirsize;
}
可能需要更嚴(yán)謹(jǐn)些吧。
作者: lonemoon    時間: 2004-02-11 14:04
標(biāo)題: 利用c++,如何知道目錄下所有文件的大。ê幽夸洠
以下是我在SOLARIS系統(tǒng)下測試成功的代碼,類似于ls命令的功能。

  1. #include <iostream>;
  2. using namespace std;

  3. #include <sys/types.h>;
  4. #include <sys/stat.h>;
  5. #include <dirent.h>;
  6. #include <time.h>;

  7. int main(int argc, char* argv[])
  8. {
  9.         DIR *dp;
  10.         struct dirent *dirp;
  11.        
  12.         if (argc == 1)
  13.                 dp = opendir( "." );
  14.         else
  15.                 dp = opendir( argv[1] );

  16.         while ( (dirp = readdir(dp)) != NULL) {

  17.                 struct stat st;
  18.                 char fn[200];
  19.                 if (argc == 1)
  20.                         strcpy(fn, dirp->;d_name);
  21.                 else
  22.                         sprintf(fn, "%s//%s", argv[1], dirp->;d_name);

  23.                 if( stat(fn, &st) < 0) {
  24.                         cout << "error" << endl;
  25.                         continue;
  26.                 }
  27.                
  28.                 if S_ISREG(st.st_mode) {
  29.                         cout << "-";
  30.                 }else if S_ISDIR(st.st_mode) {
  31.                         cout << "D";
  32.                 }else if S_ISCHR(st.st_mode) {
  33.                         cout << "C";
  34.                 }else if S_ISBLK(st.st_mode) {
  35.                         cout << "B";
  36.                 }else if S_ISFIFO(st.st_mode) {
  37.                         cout << "P";
  38.                 }else if S_ISLNK(st.st_mode) {
  39.                         cout << "L";
  40.                 }else if S_ISSOCK(st.st_mode) {
  41.                         cout << "S";
  42.                 } else
  43.                         cout << "?";

  44.                 if (st.st_mode & S_IRUSR)
  45.                         cout << "r";
  46.                 else
  47.                         cout << "-";
  48.                 if (st.st_mode & S_IWUSR)
  49.                         cout << "w";
  50.                 else
  51.                         cout << "-";
  52.                 if (st.st_mode & S_IXUSR)
  53.                         cout << "x";
  54.                 else
  55.                         cout << "-";

  56.                 if (st.st_mode & S_IRGRP)
  57.                         cout << "r";
  58.                 else
  59.                         cout << "-";
  60.                 if (st.st_mode & S_IWGRP)
  61.                         cout << "w";
  62.                 else
  63.                         cout << "-";
  64.                 if (st.st_mode & S_IXGRP)
  65.                         cout << "x";
  66.                 else
  67.                         cout << "-";

  68.                 if (st.st_mode & S_IROTH)
  69.                         cout << "r";
  70.                 else
  71.                         cout << "-";
  72.                 if (st.st_mode & S_IWOTH)
  73.                         cout << "w";
  74.                 else
  75.                         cout << "-";
  76.                 if (st.st_mode & S_IXOTH)
  77.                         cout << "x";
  78.                 else
  79.                         cout << "-";

  80.                 cout << " " << ctime( &st.st_mtime ) << " ";
  81.                 cout << " " << st.st_mtime;
  82.                 cout << " " << st.st_uid << ":" << st.st_gid;
  83.        
  84.                 cout << " ";
  85.                 cout.width(8);
  86.                 cout << st.st_size;
  87.                 cout << " " << dirp->;d_name << endl;
  88.         }

  89.         closedir(dp);
  90. }

復(fù)制代碼

作者: FH    時間: 2004-02-11 14:16
標(biāo)題: 利用c++,如何知道目錄下所有文件的大。ê幽夸洠
用ftw吧,比這簡單的多!
作者: Law    時間: 2004-02-12 09:43
標(biāo)題: 利用c++,如何知道目錄下所有文件的大。ê幽夸洠
ftw是什么哦,能說清楚一點么?




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2