文件(文件夹)删除拷贝操作类

文件 ( 文件夹 ) 相关操作 . 以下各种讨论基于 Windows+VC7.0 开发环境 .
实现文件 ( 文件夹 ) 操作的方式和函数多种多样 , 在这里我们只是很浅显讨论其中的一两中方法的应用 . 如果你想了解更多的请参考你编译系统的的帮助文件 . 也可以和我讨论 :
MSN:Ugg_xchj@hotmail.com
为了更好的对文件 ( 文件夹 ) 进行操作 , 我们先讲解一些基本知识 . 最后我们将实现一个基于我们自己方法的文件 ( 文件夹 )create,copy,delete 等操作的类 ., 如果你对文件 ( 文件夹 ) 操作已经非常熟悉 , 可以跳过前边部分 ; 在这个过程中 , 我们分别用 API 方式 , 和用 C/C++ 自身附带的文件操作方式进行文件操作 .
1: 查找一个文件是否存在 ;
在打开一个文件前 , 判断一个文件是否存在很重要 . 我们可以通过 CFileFind 类来查找指定目录的下的文件是否存在 , 我们可以借助 MFC, 使用 Windows API 函数 .
CFileFind find;// 定义find对象.
BOOL bState =find.FindFile(_T("c://temp/a.txt"));// 输入要查找的文件名
if (bState)
{
     AfxMessageBox(_T(" 找到文件"));
     // 找到文件相应处理
}
else
{
     AfxMessageBox(_T(" 没有找到文件是否创建"));
// 是否创建文件
}
这样我们就可以判断一个文件是否存在了.
你也可以用PathFileExists()函数判断文件是否存在,需要包括#include <shlwapi.h>库文件
2: 创建,复制,删除一个文件.
复制,删除一个文件我们可以使用windows API函数来完成,我们分别来实现.
请记住一点我们在操作文件时,不能对文件目录进行创建.举个例子说明:
如果我们当前目录是C:/temp/在这个目录下没有存在C:/temp/temp,如果我们创建,复制,删除一个文件C:/temp/temp/a.txt都将失败.也正是因为这一点,我才觉的有必要写这片文章.
1) 文件创建
我们可以使用系统的CreateFile不过参数比较多,应用比较复杂,可以用这个函数创建普通文件,也就创建管道(PIPE)可以用于网络,也就用于本地等.我们的目的就是实现简单的文件操作所以没有应用这么复杂的函数.
CFile file(_T("C://temp/a.txt"),CFile::modeCreate|CFile::readOnly);
     // 我们可以用CFile类,当然象STL中fstream,ostream,C中的fopen都可以,
     // 以创建模式打开一个文件CFile::modeCreate,STL中是ios_base::trunc
     // 如果文件C:/temp/a.txt存在,我们就读取文件,如果不存在我们就创建
2) 文件复制
CopyFile(_T("C://temp/a.txt"),T("C://temp/b.txt"),true);
     // CopyFile 参数说明,参数1:要复制的文件名,2:复制文件的新文件名,
     // 3; 是否覆盖,如果发现参数2指定的文件名已经存在,当为true是表示
     // 覆盖,false时表示不覆盖.
     // 说明.输入的参数2不能包括新目录内,记此函数只能创建文件,不能创建文件夹
3) 文件删除
DeleteFile(_T("C://temp/a.txt"));
     // 参数说明,参数表示要删除的文件名
 
3: 创建删除一个目录(文件夹)
如何系统创建一个目录和文件夹.
1): 创建一个目录
CreateDirectory(_T("C:/temp"),NULL);
     // 第一个参数是要创建的文件目录名,第二个参数是文件夹的属性.
     // 记住:我们只能从一级目录创建一级目录.
2) 删除一个目录
RemoveDirectory(_T("C:/temp"));
     // 删除目录,
     // 记住:只能从内层目录一层一层向外删除,删除目录时,首先要删除里面的文件,不然无法删除
 
应用上面基本知识,我们定义一个自己的类,实现文件(文件夹)删除复制,以及同级文件夹的大小,文件夹内文件的数量.定义如下操作.
// 拷贝文件
void UCopy(LPCTSTR sOriginalFile,LPCTSTR sNewFile,bool bSkipIfExists = false);
// 拷贝文件夹
void UCopyFolder(LPCTSTR sOriginalFolder,LPCTSTR sNewFolder,bool bSkipIfExists = false);
// 获取文件大小,字节数
long UGetFileBytesSize(LPCTSTR sOriginalFile);
// 获取文件夹的大小,字节数
long UGetFolderBytesSize(LPCTSTR szFolderr,bool bSubFolder = true);
// 创建文件夹
bool UCreateFolder(LPCTSTR szFolde);
// 获得文件夹内文件数量
int UGetFolderFiles(LPCTSTR szFolder,bool bSubFolder = true);
// 删除文件(最后一项指定是否彻底删除,彻底删除后数据无法恢复)
void UDeleteFile(LPCTSTR szFile,bool bQuietDelete = false);
// 删除文件夹(最后一项指定是否彻底删除,,彻底删除后数据无法恢复)
void UDeleteFolder(LPCTSTR szFolder, bool bSubFolder = true, bool bQuietDelete = false);
// 关闭应用程序(如果删除,复制应用程序时,应用程序必须是关闭状态的),需要用户判断关闭.
bool UCloseApplication(LPCTSTR szFolder,bool bAskUser = false);
 
如何使用?
 
在要使用的文件中加入 .
#include "UFile.h"
 
定义如下变量
CUFile file;
 
可以使用功能
file.UCloseApplication("C://temp//cmd.exe",true);
file.UCopyFolder("C://temp","D://temp");
int folderfiels = file.UGetFolderFiles("C://temp");
long foldersize = file.UGetFolderBytesSize("D://temp");
foldersize = file.UGetFileBytesSize("D://temp//cmd.exe");
file.UDeleteFolder("D://temp");
file.UCreateFolder("C://temp//temp//temp//temp//tes.txt");
file.UCopy("C://temp//test.htm","D://temp//test.htm");
file.UDeleteFile("C://temp//test.htm",true);
下载这类请到http://www.exuetang.net



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=588368
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值