获取目录下的所有文件名、删除文件、创建文件

#include <iostream>
#include <string>
#include <list>
#include <windows.h>

using namespace std;

int GetAllFileName(string strPath, list<string> &lsName);
bool DelFile(list<string> &lsName, string strFilePath, string strFileName);
bool CreFile(string strFilePath, string strFileName);

int main(int argc, char *argv[])
{

	// 获取目录路径
	cout << "please enter a directory name:" << endl;	
	char szFilePath[MAX_PATH] = {0};
	cin.getline(szFilePath, MAX_PATH);


	// 获取所有指定目录下的文件名
	list<string>::iterator iter;
	list<string> lsName;
	int count = GetAllFileName(szFilePath, lsName);
	for (iter = lsName.begin(); iter != lsName.end(); ++iter)
	{
		cout << *iter << endl;
	}
	
	// 删除文件
	cout << "please input file name for delete:" << endl;
	char szDelFile[MAX_PATH] = {0};
	cin.getline(szDelFile, MAX_PATH);
	if (DelFile(lsName, szFilePath, szDelFile))
	{
		cout << "delete file success" << endl;
	}

	// 创建文件
	cout << "please input file name for create:" << endl;
	char szCreFile[MAX_PATH] = {0};
	cin.getline(szCreFile, MAX_PATH);
	if (CreFile(szFilePath, szCreFile))
	{
		cout << "create file success" << endl;
	}

	return 0;
}

int GetAllFileName(string strPath, list<string> &lsName)
{
	if (strPath.empty())
	{
		return -1;
	}

	int nFileCount = 0;
	WIN32_FIND_DATA finder;
	string strFile = strPath + "\\*.*";
	HANDLE hFile = FindFirstFile(strFile.c_str(), &finder);
	if (INVALID_HANDLE_VALUE != hFile)
	{
		do
		{
			lsName.push_back(finder.cFileName);
			nFileCount++;
		}while(FindNextFile(hFile, &finder) != 0);
	}
	FindClose(hFile);

	return nFileCount-2; // 减去当前目录和上级目录
}


bool DelFile(list<string> &lsName, string strFilePath, string strFileName)
{
	bool bRet = false;
	if (lsName.empty() || strFilePath.empty() || strFileName.empty())
	{
		return bRet;
	}

	list<string>::iterator iter;

	for (iter = lsName.begin(); iter != lsName.end(); ++iter)
	{
		if (strFileName.compare(*iter) == 0)
		{
			string strTemp = strFilePath + "\\" + strFileName;
			if (DeleteFile(strTemp.c_str()))
			{
				lsName.erase(iter);		// 删除list容器中的文件名
				bRet = true;
				break;
			}
		}
	}

	return bRet;
}

bool CreFile(string strFilePath, string strFileName)
{
	bool bRet = false;
	if (strFilePath.empty() || strFileName.empty())
	{
		return bRet;
	}

	string strTemp = strFilePath + "\\" + strFileName;
	if (CreateFile(strTemp.c_str(),
					GENERIC_READ | GENERIC_WRITE,  
					0,
					NULL,
					CREATE_NEW,
					NULL,
					NULL) != INVALID_HANDLE_VALUE)
	{
		bRet = true;
	}
	
	return bRet;
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信博6主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值