C 實現資料夾複製

2021-07-23 10:03:53 字數 3125 閱讀 3028

語言:c

++環境:

windows10 x64 visual sudio 2013

linux ubuntu16.04 gcc

說明:封裝了乙個類用於複製資料夾到另一指定目錄,

不刪除原始檔,

不改變原始檔

/資料夾名。

注意:只能複製指定資料夾下的檔案,

無法處理子目錄(以後再改),

windows

下要用絕對路徑。

成員描述:1、

void copy(const std::string& srcdirpath, const std::string& desdirpath);

型別:公有。

功能:入口函式,給定源資料夾路徑()、和目的資料夾路徑,會將源資料夾整個存入目標路徑下(而不是只儲存內容)。

2、

bool make_dir ( const std::string& pathname);

型別:私有。

功能:用於執行建立資料夾操作,需要提供包含路徑的完整資料夾名稱

3、

bool get_src_files_name(std::vector& filenamelist);

型別:私有。

功能:遍歷源資料夾下所有檔名,並存入

list

中。4、

void do_copy(const std::vector& filenamelist);

型別:私有。

功能:對資料夾下的檔案進行拷貝操作,使用到了

openmp

做並行支援,簡單使用方法見我另外幾篇博文。

**:

copy_dir.h 檔案

/**

* author : ladd7

*/#ifndef copydir_h

#define copydir_h

#include #include class copydir

;#endif // copydir_h

copy_dir.cpp 檔案

/**

* author : ladd7

*/#include "copy_dir.h"

#include #include #include #if defined(_win32)

# include # include # include # include # include #else // linux

# include # include # include # include # include #endif

copydir::copydir()

void

copydir::copy(const std::string& srcdirpath, const std::string& desdirpath)

if(n == 0)

srcdir = srcdirpath.substr(n-1, srcdirpath.size());

#else // linux

int n = 0;

while (srcdirpath.find('/', n) != std::string::npos)

if(n == 0)

srcdir = srcdirpath.substr(n-1, srcdirpath.size());

#endif

this->desdirpath = desdirpath + srcdir;

if(!make_dir(this->desdirpath))

std::vectorfilenamelist;

if(!get_src_files_name(filenamelist))

if(filenamelist.empty())

do_copy(filenamelist);

}bool

copydir::make_dir (const std::string& pathname)

#else // linux

if(::mkdir(pathname.c_str(), s_irwxu | s_irgrp | s_ixgrp) < 0)

#endif

return true;

}bool

copydir::get_src_files_name(std::vector& filenamelist)

else

} _findclose(lf);

#else // linux

dir *dir;

struct dirent *ptr;

if ((dir=opendir(this->srcdirpath.c_str())) == null)

while ((ptr=readdir(dir)) != null)

closedir(dir);

#endif

return true;

}void

copydir::do_copy(const std::vector&filenamelist)

std::ofstream out;

out.open(nowdesfilepath);

if(!out)

out << in.rdbuf();

out.close();

in.close();

}}

測試:

main.cpp檔案

#include #include "copy_dir.h"

using namespace std;

int main(int argc, char *argv)

C 複製資料夾

昨天打算利用獲取的資料夾下所有檔案列表,然後在目標位置新建這個目錄,後來發現很麻煩,實現起來有太多的無用的東西。在網上找了下高手的文章,無恥的用了人家的方法.但總的說還是遞迴的用法,只不過我沒想到用directoryinfo這個類,一直在對著directory想,directory主要是靜態方法,沒...

檔案 資料夾複製

通道對通道複製效率高 param f1 原始檔 param f2 目的檔案 return throws exception public static long forchannel file f1,file f2 throws exception if inc.size inc.position ...

C 複製資料夾及子資料夾的檔案

通用的檔案操作功能 複製資料夾及子資料夾的檔案 複製源資料夾及其子資料夾中的檔案 public void copyfile string sourcepath,string objpath string files directory getfiles sourcepath for int i 0 ...