\

[C#]コピー先にディレクトリが存在しない場合、作成してコピーする方法

C# でファイルをコピーする際に、コピー先のディレクトリが存在しない場合はエラーになります。

ファイルコピーする前にディレクトリ存在チェックを行い、存在しない場合は作成してからファイルコピーする関数を作成しましたので、紹介します。

1
2
3
4
5
6
7
8
9
static void CreateDirAndCopyFile(string sourceFullPath, string distFullPath)
{
string distDir = Path.GetDirectoryName(distFullPath);
if(!Directory.Exists(distDir)){
Directory.CreateDirectory(distDir);
}

File.Copy(sourceFullPath, distFullPath, true);
}

1. 引数は「コピー元のファイルフルパス」と「コピー先のファイルフルパス」

普通のコピーコマンドと同じような引数構成にしています。戻り値はありませんので、必要であればカスタマイズしてみてください。

2. コピ先ファイルフルパスから、ディレクトリパスを取得

フルパスからディレクトリパスを取得するには、以下の関数を使用します。

1
string distDir = Path.GetDirectoryName(distFullPath);

Path.GetDirectoryName 関数を使用します。戻り値にディレクトリパスが設定されます。

3. ディレクトリ存在チェック

ディレクトリ存在チェックを行うには、以下のように記述します。

1
Directory.Exists(distDir)

ディレクトリが存在する場合は「true」、存在しない場合は「false」が戻り値になります。

4. ディレクトリを作成する

ディレクトリを作成するには、以下のように記述します。

1
Directory.CreateDirectory(distDir)

Directory.CreateDirectory 関数にディレクトリパスを引数として設定すると、ディレクトリが作成できます。

5. ファイルをコピーする

1
File.Copy(sourceFullPath, distFullPath, true);

File.Copy 関数でファイルをコピーします。第三引数は、上書きするかどうかを指定します。Trueの場合、上書きします。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱