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

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

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

        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. コピ先ファイルフルパスから、ディレクトリパスを取得

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

string distDir = Path.GetDirectoryName(distFullPath);

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

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

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

Directory.Exists(distDir)

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

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

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

Directory.CreateDirectory(distDir)

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

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

File.Copy(sourceFullPath, distFullPath, true);

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

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

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

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

About Me

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