程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 統計電腦所有文件

統計電腦所有文件

編輯:C++入門知識

沒事無聊寫著玩的,也就是熟練運用API而已,沒什麼技術可言... [cpp]  #include <windows.h>    #include <algorithm>    #include <iostream>    #include <iomanip>    #include <fstream>    #include <string>    using namespace std;    static int count=0; //記錄文件個數        void FindInAll(string & Path,fstream & outfile)    {        string szFind;        szFind=Path;        szFind+="*.*";        WIN32_FIND_DATA FindFileData;//WIN32_FIND_DATA結構包含文件的全部信息        HANDLE hFind=FindFirstFile(szFind.c_str(),& FindFileData);//FindFirstFile根據文件名查找文件        if(hFind==INVALID_HANDLE_VALUE)            return;        do        {            if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果找到的是目錄,則進入此目錄進行遞歸            {                string szFile;                //去掉目錄中的.和..目錄                szFile=Path+FindFileData.cFileName+"\\";                string test=szFile.substr(szFile.length()-3,szFile.length());                if(test=="\\.\\"||test=="..\\")                    continue;                FindInAll( szFile, outfile);            }            else //找到的是文件            {                string szFile;                szFile=Path+FindFileData.cFileName;                outfile<<szFile<<endl;                ::count=::count+1;            }        }        while(FindNextFile(hFind,& FindFileData));        FindClose(hFind);    }        int main()    {        //用來記錄程序運行所花時間        clock_t start,finish;       double totaltime;       start=clock();//計時開始        cout<<"***********************************************************"<<endl;        cout<<"---------------Created By Cryking 2012.11.02---------------"<<endl;        cout<<"本程序自動遍歷電腦所有文件(包括隱藏文件),時間較長,請耐心等待..."<<endl;        cout<<"***********************************************************"<<endl;        fstream outfile("allfile.txt",ios::out);        cout<<"----------------遍歷磁盤所有文件開始:-----------------------"<<endl;        outfile<<setw(3)<<"------遍歷磁盤所有文件開始:-----------"<<endl;        //遍歷整個電腦的磁盤        int DSLength = GetLogicalDriveStrings(0,NULL);//得到驅動器總長度        char * Path=new char[DSLength];        GetLogicalDriveStrings(DSLength,Path);//得到第一個驅動器地址信息        while(Path!=NULL)        {            //直接遍歷D盤所有文件            if((string)Path=="") //路徑出錯                break;//跳出循環            cout<<"正在遍歷"<<Path<<"盤文件,請等待..."<<endl;            FindInAll((string)Path,outfile);            Path=Path+strlen(Path)+1;//根據當前驅動器地址獲得下一個驅動器地址        }        locale::global(locale("C"));        finish=clock();//計時結束        totaltime=(double)(finish-start)/CLOCKS_PER_SEC;        outfile<<setw(3)<<"------遍歷磁盤所有文件結束-----------"<<endl;        outfile<<setw(3)<<"本次遍歷所花      outfile<<setw(3)<<"本電腦共有文件數:"<<::count<<endl;        outfile<<setw(3)<<"------------遍歷完成---------------"<<endl;        outfile.close();        cout<<"遍歷完成,請查看該目錄下的allfile.txt文件!"<<endl;        system("pause");        return 0;    }     程序運行的時間沒我想象的那麼慢,用了遞歸,而且所有文件路徑信息全寫到文件了(嘿嘿,貌似可以用來干些壞事··),運行完後文件大概有30M,如果用記事本打開的話有點慢,建議用UE打開,看看我的結果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved