Windows下C++文件管理器

实现功能:

1、实现文件夹创建、进入。
2、实现当前文件夹下的内容罗列。
3、实现文件拷贝和文件夹拷贝(文件夹拷贝指深度拷贝,包括所有子目录和文件)。
4、实现文件删除和文件夹删除(文件夹删除指深度删除,包括所有子目录和文件)。
四个文件:MainFileManager .cpp、FileManager.h、FileManager.cpp、dirent.h(从Git-Hub上下载

MainFileManager .cpp

#include "FileManager.h"
int main() {
   
   
	FileManager fileManager;
	fileManager.start();
	system("pause");
	return 0;
}

FileManager.h

#include "dirent.h"

class FileManager
{
   
   
private:
	void welcome();
	void getHelp();
	char* getPath();
	bool changeDir(char*);
	bool createDir(char*);
	DIR* openDir(char*);
	char* addFileNames(char*, char*);
	void input();
	void outPutDirent();
	void removeIt(char*);
	void closeDir(DIR*);
	void copyIt(char*, char*);
	bool copyDir(char*, char*);
	bool ifDirExist(char*);
	bool ifFileExist(char*);
	void enter(char*);
	bool copyFile(char*, char*);
	bool removeDir(char*);

public:
	FileManager();
	~FileManager();
	void start();
};

FileManager.cpp

#include "FileManager.h"
#include <iostream>
#include <string>
#include <direct.h>
#include <fstream>
#include <string>
#include <iomanip>

using namespace std;

FileManager::FileManager() {
   
   
}

FileManager::~FileManager() {
   
   
}

void FileManager::start() {
   
   
	welcome();
	getHelp();
	input();
}

bool FileManager::createDir(char* fileName) {
   
   
	if (fileName != NULL && !_mkdir(fileName))//&&短路
		return true;
	return false;
}

bool FileManager::changeDir(char* newFilePath) {
   
   
	if ((newFilePath != NULL) && (_chdir(newFilePath) == 0))
		return true;
	return false;
}

void FileManager::enter(char* fileName) {
   
   
	if (ifDirExist(fileName) == false) {
   
   
		cout << fileName << "文件夹不存在" << endl;
		return;
	}
	char* filePath_new = NULL;
	if ((filePath_new = addFileNames(getPath(), fileName)) == NULL) {
   
   
		cout << "获取目标文件夹路径失败" << endl;
		return;
	}
	else if (changeDir(filePath_new)) {
   
   
		cout << "进入文件夹成功" << endl;
		delete[] filePath_new;
		return;
	}
	else
		cout << "进入文件夹失败" << endl;
	delete[] filePath_new;
}

DIR* FileManager::openDir(char* fileName) {
   
   
	DIR* dirPtr = NULL;
	if (fileName != NULL)
		dirPtr = opendir(fileName);
	return dirPtr;
}

void FileManager::closeDir(DIR * dirPtr) {
   
   
	if (dirPtr != NULL)
		closedir(dirPtr);
}

char* FileManager::addFileNames(char* filePath, char* fileName) {
   
   
	if (filePath == NULL || fileName == NULL)
		return NULL;
	char* absoluteNames_new = new char[strlen(filePath) + strlen(fileName) + 2];
	strcpy_s(absoluteNames_new
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值