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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2547 | 回復(fù): 4
打印 上一主題 下一主題

[C++] 利用c++,如何知道目錄下所有文件的大。ê幽夸洠 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2004-02-11 10:09 |只看該作者 |倒序?yàn)g覽
如何知道目錄下所有文件的大。ê幽夸洠
類似于du -k 命令,獲得目錄中所有文件的大小
謝謝

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2004-02-11 12:44 |只看該作者

利用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計(jì)算長(zhǎng)度
          dirsize += 文件長(zhǎng)度
        如果是其他類型則不計(jì)算?
      }
      (void) closedir (dp);
    }


   return dirsize;
}
可能需要更嚴(yán)謹(jǐn)些吧。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2004-02-11 14:04 |只看該作者

利用c++,如何知道目錄下所有文件的大。ê幽夸洠

以下是我在SOLARIS系統(tǒng)下測(cè)試成功的代碼,類似于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ù)制代碼

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2004-02-11 14:16 |只看該作者

利用c++,如何知道目錄下所有文件的大小(含子目錄)

用ftw吧,比這簡(jiǎn)單的多!

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2004-02-12 09:43 |只看該作者

利用c++,如何知道目錄下所有文件的大小(含子目錄)

ftw是什么哦,能說(shuō)清楚一點(diǎn)么?
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP