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