c++ 如何将一个文件夹里的所有文件追加到另一个文件中
2012-11-10 16:49
615 查看
方法:
1、打开A文件,准备追加信息。fin.open(file_Name, ios_base::app);
2、依次打开文件夹中的文件,将内容追加到A中。
使用FindFirstFile()跟FindNextFile();
VC声明
HANDLE FindFirstFile(
LPCTSTR lpFileName, // file name
LPWIN32_FIND_DATA lpFindFileData // data buffer);
参数说明
HANDLE hFindFile搜索的文件句柄 函数执行的时候搜索的是此句柄的下一文件 LPWIN32_FIND_DATA lpFindFileData 指向一个用于保存文件信息的结构体
返回值
如果调用成功返回一个句柄,可用来做为FindNextFile或 FindClose参数
调用失败 返回为INVALID_HANDLE_VALUE(即-1) ,可调用GetLastError来获取错误信息
VC声明
BOOLFindNextFile(
HANDLE hFindFile, //searchhandle
LPWIN32_FIND_DATA lpFindFileData //databuffer );
功能说明
继续查找FindFirstFile函数搜索后的文件
参数说明
HANDLE hFindFile搜索的文件句柄 函数执行的时候搜索的是此句柄的下一文件
LPWIN32_FIND_DATA lpFindFileData 指向一个用于保存文件信息的结构体
返回值
非零表示成功,零表示失败。如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES
总体框架:
WIN32_FIND_DATA FindFileData;
HANDLE hFind = ::FindFirstFile(pcsDir, &FindFileData);
string filename;
if(INVALID_HANDLE_VALUE == hFind)
return false;
int flag = 1;
while(flag != 0)
{
flag = FindNextFile(hFind, &FindFileData);
filename = FindFileData.cFileName;
}
FindClose(hFind);
3、需注意的地方:
目录的路径名需要:const char * pcsDir = "D:\\eng\\*.*";
源代码:
[cpp] view plaincopyprint?
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
#include<stdio.h>
usingnamespace std;
constchar * file_Name = "listening.txt";
constchar * pcsDir = "D:\\eng\\*.*"; ////////////////////////////////////
ofstream fin;
bool CombineFile(string filename);
int iFindFiles();
int main()
{
ifstream fin_read;
fin_read.open(file_Name);
char ch;
if(!fin_read.is_open())
{
cout<< "can not open the file(fin_read)" << endl;
return 0;
}
else
{
char ch;
while (fin_read.get(ch))
cout << ch;
cout << endl <<endl;
fin_read.close();
}
string str;
cout << "if you wanna copy those files, please enter -- yes:" <<endl;
cin >>str;
if( str == "yes" )
{
fin.open(file_Name, ios_base::app);
if( !fin )
{
cout <<"can not open the fin" <<endl;
}
else
{
iFindFiles();
}
}
fin.close();
return 0;
}
int iFindFiles( )
{
if (!pcsDir)
{
cout <<"can not open the dir" << endl;
returnfalse;
}
cout << "open the dir" << endl;
WIN32_FIND_DATA FindFileData;
HANDLE hFind = ::FindFirstFile(pcsDir, &FindFileData);
string filename;
if(INVALID_HANDLE_VALUE == hFind)
returnfalse;
int flag = 1;
while(flag != 0)
{
flag = FindNextFile(hFind, &FindFileData);
filename = FindFileData.cFileName;
int strSize = filename.size();
if( strSize <= 3 )
continue;
string isStr = filename.substr(strSize-3, strSize);
if( isStr == "lrc")
{
CombineFile(filename);
}
}
FindClose(hFind);
return 0;
}
bool CombineFile(string filename)
{
ifstream foutput;
filename = "D:\\eng\\" + filename;
cout << "the f1ile name is " << endl <<filename.c_str() <<endl;
foutput.open(filename.c_str());
if( !foutput )
{
cout << "can not open the file" << endl<<endl;
returnfalse;
}
char ch;
while (foutput.get(ch))
{
fin<< ch;
}
fin << endl << endl;
foutput.close();
returntrue;
}
相关文章推荐
- C++ 如何将一个文件夹中的所有文件(.txt或者.log)内容整合到一个文件(.txt或者.log)当中
- 如何拷贝一个文件夹内的所有文件到另一个地方
- c++如何获取一个文件夹下面的所有文件
- 每天学点linux--(用shell实现将一个文件夹下面的所有文件拷贝到另一个文件夹下/shell下如何重命名一个文件)
- 使用C++ 复制一个文件夹下的所有文件到另一个文件夹
- java 如何递归遍历一个文件夹下的所有文件
- c#实现将一个文件夹中的所有文件复制到另一个文件夹,并在新文件夹中创建一个txt文件记录copy的文件综述以及文件名称
- (表格)vba如何打开一个文件夹下所有xls文件
- 把一个文件夹下所有文件,移动到另一个文件夹,不要目录,只要文件
- 键盘录入两个文件路径,将其中一个文件夹中的所有的文件复制到另一个文件中
- python如何获取一个文件夹内包括子文件夹所有文件的名字和路径
- java题-如何递归遍历一个文件夹下的所有文件
- C# 递归 把一个文件夹下所有文件复制到另一个文件夹下
- php关于一个文件夹所有的文件复制到另一个文件夹里面去,相同的文件名覆盖
- 如何让文件夹内所有文件名显示在一个Excel文件
- 如何是获取一个文件夹里所有以.java结尾文件的数目,并把符合条件的文件名写到一个目录下。
- c++如何一个文件如何调用在同一个工程下的另一个文件的函数
- linux命令行下如何以目录树的形式显示一个文件夹的所有文件
- JS如何遍历一个文件夹下的所有文件与目录(转)
- JS如何遍历一个文件夹下的所有文件与目录