文件自动拆分

将一个文件中同一编号的数据拆分,分别放到新建的文件夹中去。

     

  5 #include <iostream>
  6 #include <string>
  7 #include <sstream>
  8 #include <fstream>
  9 #include <vector>
 10 #include <direct.h> //创建文件夹头文件
 11 #include<time.h>    //获取时间头文件
 12 using namespace std;
 13
 14
 15 void getFiles( string path, vector<string>& files, vector<string> &ownname)
 16 {
 17     /*files存储文件的路径及名称(eg.   C:\Users\WUQP\Desktop\test_devided\data1.txt)
 18      ownname只存储文件的名称(eg.     data1.txt)*/
 19
 20     //文件句柄
 21     long   hFile   =   0;
 22     //文件信息
 23     struct _finddata_t fileinfo;
 24     string p;
 25     if((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) !=  -1)
 26     {
 27         do
 28         {
 29             //如果是目录,迭代之
 30             //如果不是,加入列表
 31             if((fileinfo.attrib &  _A_SUBDIR))
 32             {  /*
 33                 if(strcmp(fileinfo.name,".") != 0  &&  strcmp(fileinfo.name,"..") != 0)
 34                     getFiles( p.assign(path).append("\\").append(fileinfo.name), files, ownname ); */
 35             }
 36             else
 37             {
 38                 files.push_back(p.assign(path).append("\\").append(fileinfo.name) );
 39                 ownname.push_back(fileinfo.name);
 40             }
 41         }while(_findnext(hFile, &fileinfo)  == 0);
 42         _findclose(hFile);
 43     }
 44 }
 45
 46 int main()
 47 {
 48
 49     clock_t start_time=clock(); //开始时间
 50
 51     int detector_seq;
 52     int sequence;
 53     int arrive_time;
 54
 55     char * filePath = "C:\\Users\\WUQP\\Desktop\\test_devided";
 56     char * addfilePath = "\\processed_data";
 57     char processedfilePath[100];
 58     strcpy_s(processedfilePath, filePath);
 59     strcat_s(processedfilePath, addfilePath);
 60     cout << processedfilePath << endl;
 61     _mkdir(processedfilePath);
 62
 63     vector<string> files;
 64     vector<string> ownname;
 65
 66     //获取该路径下的所有文件
 67     getFiles(filePath, files, ownname);
 68     int size = files.size();
 69     for (int i = 0;i < size;i++)
 70     {
 71         cout<<endl;
 72         int num_receiver_times = 0;
 73         string in_str;
 74
 75         //检查每个文件中的事件数目
 76         ifstream in_File(files[i].c_str());
 77         if (in_File.is_open())
 78         {
 79             cout<<files[i].c_str() <<"   is open!"<< endl;
 80             while (in_File >> detector_seq >> sequence >> arrive_time)
 81             {
 82                 if(detector_seq == 0)
 83                 {
 84                     ++num_receiver_times;
 85                 }
 86                 else break;
 87             }
 88         }
 89         in_File.close();
 90
 91         //根据事件数目动态分开各事件的数据
 92         cout << "the sources of this file is " << num_receiver_times << endl;
 93         vector<string>* p = new vector<string>[num_receiver_times];
 94         ifstream in_File_(files[i].c_str());
 95         if (in_File_.is_open())
 96         {
 97             while (getline(in_File_, in_str))
 98             {
 99                 for (int j=0; j<num_receiver_times; j++)
100                 {
101                     p[j].push_back(in_str);
102                     if ( (j+1) % num_receiver_times != 0 )
103                     {
104                         getline(in_File_, in_str);
105                     }
106                 }
107             }
108         }
109         in_File_.close();
110
111         //分别将不同的数据写入不同的文件
112         for (int k = 0; k < num_receiver_times; k++)
113         {
114             int flag = 0;
115             char title[80];
116             sprintf_s(title, "%s\\%s_%d.txt", processedfilePath, ownname[i].c_str(), k);
117             ofstream outfile(title, ios::ate|ios::out);
118             for (vector<string>::iterator iter = p[k].begin(); iter!= p[k].end(); iter++)
119             {
120                 cout << flag++ << ":  " << *iter << endl;
121                 outfile << *iter << endl;
122             }
123             outfile.close();
124         }
125     }
126
127     clock_t end_time=clock(); //结束时间
128
129     cout<< "Running time is: "
130         <<static_cast<double>(end_time - start_time)/CLOCKS_PER_SEC
131         <<"(s)"<<endl;        //输出运行时间
132     return 0;
133 }
时间: 2024-10-05 16:25:05

文件自动拆分的相关文章

CCS 6新建文件自动生成注释

对于CCS6,可以通过配置,达到新建源文件或者头文件时,自动生成适当的注释: 一.新建源文件自动生成配置. 在某个文件夹下右击选择 New - Source File. 点击 Configure,再选择对应的语言,然后点击Edit. 此时就出现了一个可编辑的模版.适当的配置模版,保存.可以参考下列程序: 1 /**************************************************************** 2 @版权 : 个人开发,禁止用于商业用途 3 @文件名

Linux设备文件自动生成

第一种是使用mknod手工创建:# mknod <devfilename> <devtype> <major> <minor> 第二种是自动创建设备节点:利用udev(mdev)来实现设备文件的自动创建,首先应保证支持udev(mdev),由busybox配置. 具体udev相关知识这里不详细阐述,可以移步Linux 文件系统与设备文件系统 -- udev 设备文件系统,这里主要讲使用方法. 在驱动用加入对udev 的支持主要做的就是:在驱动初始化的代码里调

【Android】Android Layout Binder——根据layout布局文件自动生成findViewById的java代码的神器

Android Layout Binder是一个网站,能够在线的根据layout布局文件自动生成findViewById的java代码. 网址是http://android.lineten.net/layout.php 如图:

huhamhire-hosts — Hosts文件自动配置工具

https://www.anotherhome.net/1376 推荐配合EasyGoAgent使用: EasyGoAgent — 开箱即用的GoAgent Update 2015.5.15 数据文件V1.5.7已更新, 数据包下载:http://pan.baidu.com/s/1mgrExrM (感谢网友zzd911) Update 2015.4.1 数据文件V1.5.6已更新, 数据包下载:http://pan.baidu.com/s/1qWqOtUO Update 2015.2.4 数据文

bat文件自动创建cocos2dx 工程

1. 写在开头 本人写了一个自动创建cocos2dx工程的脚本..bat文件,会修正Application.mk 文件,并且在桌面创建打开项目目录的快捷方式. 使用条件:1. 在本地计算机中已安装python 2.7.6 版本,并将python安装目录加入到 PATH环境变量中. 2. 根据自己的cocos2dx与ndk安装目录,更改脚本最初COCOS2DX_DIR.NDK_DIR变量. 3.本脚本只创建c++语言的cocos2dx工程,创建成功后仍需手动配置c++ build目录. 个人写的脚

Latex文件如何拆分进行独立编译?

Latex文件如何拆分并进行独立编译? --latex源文件分批独立编译 最近使用Latex编写长文档,对于文件的组织有些困扰. 如果LaTeX文档比较大,可以考虑拆分为几个部分.比如编辑一本书的时候可以将各章独立为chap1.tex,chap2.tex,chap3.tex,然后在主文件main.tex中包含进来: \documentclass{book} \begin{document} \title{A LaTeX Book} \author{[email protected]} \date

【转】pdf文件自动切白边

pdf文件自动剪裁(自动切白边) FROM:http://www.ai7.org/wp/html/754.html 可能用到的环境.工具:Ubuntu 10.04+TeXLive 2008+pdfcrop+CUPS打印驱动,用Windows的兄弟就不用看了,这些工具理论上在Windows下也有,但是还要另外装不少东西. 下面假设原文件(也就是打算切白边的文件)叫abc.pdf pdfcrop abc.pdf,默认会生成abc-crop.pdf文件,这个已经是切掉白边的了,要是你不嫌它大(或者它确

利用Inotify和Rsync将web工程文件自动同步到多台应用服务器

背景:需要搭建一套跟线上一模一样的环境,用来预发布,这是其中的web分发的一个小模块的实现过程. 1 工具以及环境简介 1.1,Inotify工具 Inotify,它是一个内核用于通知用户空间程序文件系统变化的机制.众所周知,Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如hotplug.udev 和 ino

Log4net日志文件自动按月份存放和日志独占问题的解决

让log4net日志文件自动按月份存放 log4net日志文件的作用还真不小,可以保存管理员.用户对数据库的任何操作,保存管理员和用户的登录记录,分析系统运行错误,所以不舍得随便将日志文件Delete.如果时间长了,日志文件夹一定会有很多很多日志文件,不便于管理员查看. 所以让log4net日志文件自动按月份存放是必须的,其实方法很Easy,额是突发奇想在DatePattern value中增加“yyyyMM\\”,运行后果然如额所愿. 也就是修改Web.Config文件如下: <file va