2017-03-23 4 views
0

私は新しいstd::filesystemライブラリを試しています。 私は、ユーザがリストアップしたファイルを特定のディレクトリにコピーするプログラムを作っています。しかし、リストされたファイルがサブディレクトリにある場合、std::filesystem::copyまたはstd::filesystem::copy_fileを使用する単純なアプローチは機能しませんでした。例えばファイルをコピーするときに存在しないディレクトリを自動的に作成することはできますか?

、私は

(some other directory)/file1.ext 
(some other directory)/subdir/file2.ext 

を得るように、(some other directory)

(some directory)/file1.ext 
(some directory)/subdir/file2.ext 

を言って、私は(some directory)にいくつかのファイルをコピーしたいとディレクトリ(some directory)は、ファイルやディレクトリか等を含んでいてもよいですコピーする必要はありません。 std::filesystem::copyだけを使用すると、file1.extは成功しますが、(some other directory)/subdirがない場合はfiles2.extが失敗します。

この問題を回避するには、ディレクトリのパスを取得する

  1. コールstd::filesystem::path::remove_filenameました。
  2. ディレクトリが存在しない場合は、std::filesystem::create_directoriesを呼び出してディレクトリを作成します。
  3. std::filesystem::copyを呼び出して目的のファイルをコピーします。

この3ステップアプローチを1回の呼び出しで行うことは可能でしょうか。ありがとうございました。

答えて

0
std::filesystem::copy("(some directory)", "(some other directory)", std::filesystem::copy_options::recursive); 

出典:http://en.cppreference.com/w/cpp/filesystem/copy_options

+0

申し訳ありませんが、私はそのことについて –

+0

申し訳ありません...「ディレクトリ(いくつかのディレクトリ)にコピーする必要がないなどのファイルやディレクトリやが含まれていてもよい」述べました。私はそのような機能があるとは思わない。リンク元には、コピー機能で使用可能なすべてのオプションがリストされています。 – XNiiNJA

関連する問題