其实就是
递归。找到1级目录(用户选择),找1级目录下所有
文件,大小累加然后找1级目录下所有2级
文件夹,然后遍历2级,再找2级目录下所有文件,再找所有文件夹。。。。。。//////获取指定路径的大小//////路径///publicstaticlongGetDirectoryLength(stringdirPath){longlen=0//判断该路径是否存在(是否为文件夹)if(!Directory.Exists(dirPath)){//查询文件的大小len=FileSize(dirPath)}else{//定义一个DirectoryInfo对象DirectoryInfodi=newDirectoryInfo(dirPath)//通过GetFiles方法,获取di目录中的所有文件的大小foreach(FileInfofiindi.GetFiles()){len+=fi.Length}//获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归DirectoryInfo[]dis=di.GetDirectories()if(dis.Length>0){for(inti=0i///获取指定路径的占用空间//////路径///publicstaticlongGetDirectorySpace(stringdirPath){//返回值longlen=0//判断该路径是否存在(是否为文件夹)if(!Directory.Exists(dirPath)){//如果是文件,则调用len=FileSpace(dirPath)}else{//定义一个DirectoryInfo对象DirectoryInfodi=newDirectoryInfo(dirPath)//本机的簇值longclusterSize=GetClusterSize(di)//遍历目录下的文件,获取总占用空间foreach(FileInfofiindi.GetFiles()){//文件大小除以簇,余若不为0if(fi.Length%clusterSize!=0){decimalres=fi.Length/clusterSize//文件大小除以簇,取整数加1。为该文件占用簇的值intclu=Convert.ToInt32(Math.Ceiling(res))+1longresult=clusterSize*clulen+=result}else{//余若为0,则占用空间等于文件大小len+=fi.Length}}//获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归DirectoryInfo[]dis=di.GetDirectories()if(dis.Length>0){for(inti=0i这个程序应该可以读(假定数据文件中没有第一行):
#include<iostream>
#include<fstream>
using namespace std
struct Line{
char Date[9],Time[6]
double Open,High,Low,Close
int Value,Tick_count
}
void main(){
Line *m
m=new Line[437730]
if(!m){
cout <<"Error!\n"
return
}
ifstream fin("f1.txt",ios::in)
char t
int i=0
fin.getline(m[i].Date,9,',')
while(!fin.fail()){
fin.getline(m[i].Time,6,',')
fin >>m[i].Open >>t >>m[i].High >>t >>m[i].Low >>t >>m[i].Close
fin >>t >>m[i].Value >>t >>m[i].Tick_count
fin.ignore(1)
t=','
cout <<m[i].Date <<t <<m[i].Time <<t <<m[i].Open <<t
<<m[i].High <<t <<m[i].Low <<t <<m[i].Close
<<t <<m[i].Value <<t <<m[i].Tick_count <<endl
i++
fin.getline(m[i].Date,9,',')
}
fin.close()
delete[]m
return
}
评论列表(0条)