カテゴリー
C#

[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の場合、上書きします。

作成者: はるお@ライフハックITプレゼンター

仕事や生活がラクになるアプリ・ツールを開発・提案します。社内講師、開発ツール導入、自部品製造・営業購買経理システム開発経験、RPA導入。応用情報技術者、C#,TypeScript,COBOL,PL/SQL,VBAなど。全工程(要件定義〜運用保守)。海外出張経験🇲🇽🇨🇳。1児👧1匹🐱の父。

ご意見など御座いましたら、コメント欄または Twitterまで頂けると幸いです。

詳しいプロフィールはこちら。

https://usefuledge.com/profile-2

コメントを残す

メールアドレスが公開されることはありません。