SW/C++

C++ : filesystem : 파일 복사, 디렉터리 이동, 바꾸기, 삭제, 목록, 권한 : 예제

얇은생각 2020. 4. 16. 07:30
반응형

C++ : filesystem : 파일 복사, 디렉터리 이동, 바꾸기, 삭제, 목록, 권한 : 예제

 

파일 복사하기

namespace fs = std::experimental::filesystem::v1;

int main ()
{
  fs::path originalTextPath = "C:\\examples\\myRank.txt";
  fs::path copiedTextPath = "C:\\examples\\copiedMyRank.txt";
  
  fs::path originalDirPath = "C:\\examples\\folder";
  fs::path copiedDirPath1 = "C:\\examples\\copiedFolder1";
  fs::path copiedDirPath2 = "C:\\examples\\copiedFolder2";
  
  fs::copy(originalTextPath , copiedTextPath);
  fs::copy(originalDirPath, copiedDirPath1);
  fs::copy(originalDirPath, copiedDirPath2, fs::copy_options::recursive);
  
  return 0;
}

 

파일을 복사할수 있고, 디렉토리도 복사할 수 있으며, 재귀적으로 복사도 가능합니다.

 

 

파일 또는 디렉터리 이름 바꾸기/이동

#include <experimental/filesystem>

namespace fs = std::experimental::filesystem::v1;

int main()
{
  fs::path filePath = "C:\\examples\\myRank.txt;
  fs::path renamedPath = "C:\\examples\\folder1\\rank.txt";
  fs::rename(filePath, renamedPath);
  
  return 0;
}

 

파일 또는 디렉터리의 이름을 바꾸거나 이동시킵니다.

 

 

파일 또는 디렉터리 삭제

#include<experimental/filesystem>

namespace fs = std::experimental::filesystem::v1;

int main()
{
  fs::path currentPath = fs::current_path();
  fs::create_directories(currentPath / "data");
  fs::remove(currentPath / "data);
  
  return 0;
}

 

파일이나 빈 디렉터리를 삭제합니다. 안에 들어있는 내용물들을 삭제하는 데 , remove_all()은 모든 파일을 지워버립니다.

 

 

디렉터리의 파일 목록 구하기

#include<experimental/filesystem>

namespace fs = std::experimental::filesystem::v1;

int main()
{
  for (auto & path : fs::recursive_directory_iterator("C:\\Lecture\\FilesystemExample"))
  {
    std::cout << path << std::endl;
  }
  
  return 0;
}

 

해당 디렉토리에 있는 파일 경로를 다 가지고 옵니다. 디렉터리의 요소들을 순회합니다. 재귀적으로 하위 디렉터리의 요소들을 순회합니다.

 

 

파일 속성(권한) 읽기

#include <experimanetal/filesystem>

void PrintPermission(fs::perms permission)
{
  std::cout << ((permission & fs::perms::owner_read) != fs::perms::non ? "r" : "-") << std::endl;
  
  //
  // 다양한 소유권 체크
  //
}

int main()
{
  fs::path filePath = "rank.txt";
  PrintPermission(fs::status(filePath).permissions());
  
  return 0;
}

 

파일 상태를 반환합니다. 블록파일, 디렉터리 등등을 반환합니다. 퍼미션 함수는 소유자의 읽기, 쓰기, 실행, 그룹의 읽기, 쓰기, 실행, 외부인의 읽기, 쓰기, 실행 등을의 권한을 반환합니다.

반응형