目录 文件 创建 复制 删除

#include <windows.h>
#include <iostream>
#include <fstream>
#include <direct.h>
#include <io.h>
using namespace std;

int CopyFolder(char * from,char * to) //复制目录的自定义函数
{
if(access(from,0)) //判断源目录是否存在
{
   cerr<<"源目录不存在!"<<endl;
   return 0;
}
if(mkdir(to)) //创建目标目录
{
   cerr<<"创建目标目录失败!"<<endl;
   return 0;
}
WIN32_FIND_DATA FindFileData;
char tmp[MAX_PATH];
strcpy(tmp,from);
strcat(tmp,"\\*.*");

HANDLE hFind=FindFirstFile(tmp,&FindFileData);
if(hFind==INVALID_HANDLE_VALUE) //错误处理
   return 0;

do
{
   char source[MAX_PATH],dest[MAX_PATH];
   strcpy(source,from);
   strcat(source,"\\");
   strcat(source,FindFileData.cFileName);

   strcpy(dest,to);
   strcat(dest,"\\");
   strcat(dest,FindFileData.cFileName);

   if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
   {
    if(FindFileData.cFileName[0]!='.') //非自身目录和父级目录
     CopyFolder(source,dest); //递归调用复制目录
   }
   else
    CopyFile(source,dest,true); //复制文件
}
while(FindNextFile(hFind,&FindFileData)); //查找下一文件
FindClose(hFind);
return 1;
}

int main()
{
int res;

/*目录存在的测试和目录的创建*/
res=access("testdir1",0); //判断目录testdir1是否存在,函数返回0表示存在,需要#include <io.h>
puts(res==0 ? "testdir1存在" : "testdir1不存在");
res=mkdir("testdir1"); //创建一个目录,res为函数的返回结果
puts(res==0 ? "testdir1创建成功" : "testdir1创建失败");
res=access("testdir1",0); //判断目录testdir1是否存在,函数返回0表示存在
puts(res==0 ? "testdir1存在" : "testdir1不存在");
cout<<endl;

/*文件存在的测试和文件的创建*/
res=access("testdir1\\testfile1.txt",0); //判断文件testdir1下的testfile1.txt是否存在
puts(res==0 ? "testfile1存在" : "testfile1不存在");
ofstream fout("testdir1\\testfile1.txt",ios::out); //创建文件
if(fout)
{
   fout<<"the testfile!"<<endl;
   cout<<"文件创建成功!"<<endl;
}
else
   cout<<"文件创建失败!"<<endl;
fout.close();
res=access("testdir1\\testfile1.txt",0); //判断文件testdir1下的testfile1.txt是否存在
puts(res==0 ? "testfile1存在" : "testfile1不存在");
cout<<endl;

/*目录及文件的复制*/
res=CopyFolder("testdir1","testdircopy"); //用自定义的函数复制目录
puts(res ? "testdir1到testdircopy复制成功" : "testdir1到testdircopy复制失败");
res=CopyFile("testdircopy\\testfile1.txt","testdircopy\\testfilecopy.txt",true); //文件复制
puts(res ? "testdircopy\\testfile1.txt到testdircopy\\testfilecopy.txt复制成功" : "testdircopy\\testfile1.txt到testdircopy\\testfilecopy.txt复制失败");

/*目录及文件的删除*/
res=unlink("testdircopy\\testfilecopy.txt"); //用unlink函数删除文件
puts(res==0 ? "testdircopy\\testfilecopy.txt删除成功" : "testdircopy\\testfilecopy.txt删除失败");
res=remove("testdircopy\\testfile1.txt"); //用remove函数删除文件
puts(res==0 ? "testdircopy\\testfile1.txt删除成功" : "testdircopy\\testfile1.txt删除失败");
res=rmdir("testdircopy"); //删除空目录
puts(res==0 ? "删除testdircopy成功" : "删除testdircopy失败");
res=rmdir("testdir1"); //删除非空目录测试
puts(res==0 ? "删除testdir1成功" : "删除testdir1失败");

/*特殊功能测试*/
char path[MAX_PATH];
getcwd(path,sizeof(path)); //获取当前路径
strcat(path,"\\special...\\");
mkdir("special...\\"); //这个目录...
//ShellExecute(NULL,"open",path,NULL,NULL,SW_SHOW);
rmdir("special...\\");
return 0;
}
/*
运行结果(和设想的相符,正确):
testdir1不存在
testdir1创建成功
testdir1存在

testfile1不存在
文件创建成功!
testfile1存在

testdir1到testdircopy复制成功
testdircopy\testfile1.txt到testdircopy\testfilecopy.txt复制成功
testdircopy\testfilecopy.txt删除成功
testdircopy\testfile1.txt删除成功
删除testdircopy成功
删除testdir1失败
Press any key to continue
*/
文章摘自:http://hi.baidu.com/luosiyong/blog/item/494d4f8dc9308f14b31bbaf9.html

另外找了一个改名的MFC小程序,留着备用

自己新写了一个傻瓜版重命名程序,留着备用”>

发表评论

电子邮件地址不会被公开。 必填项已用*标注