C# ファイル名でフォルダを検索してコピーする

C# サンプルコード プログラミング

概要説明

フォルダの配下も含めて、指定したキーワードが含まれるファイルを検索して

見つかったファイルを指定のフォルダにコピーするサンプルです。

Directory.GetFiles(String, String, SearchOption)

 ディレクトリからファイルを検索します。

ディレクトリ検索対象のディレクトリ
検索パターンワイルドカード(*)を含めたファイル名
SearchOptionTopDirectoryOnly…配下を含めないで検索
AllDirectories…配下を含めて検索

File.Copy(String, String, Boolean)

 ファイルをコピーします。

コピー元ファイル名のフルパス
コピー先ファイル名のフルパス
上書きの有無true…上書き
false…上書きしない

サンプルの画面はこんな感じです。

サンプルの内容

①コピー元ディレクトリから検索ファイル名にマッチするものを取得する

②見つかったファイルをリストボックスに追加する

③見つかったファイルをコピー先ディレクトリにコピーする

です。

 

この部品を画面に配置します。

No名称name部品
コピー元ディレクトリ(見出し)label1Label
コピー元ディレクトリtxtFromDirTextBox
コピー先ディレクトリ(見出し)label2Label
コピー先ディレクトリtxtToDirTextBox
検索ファイル名(見出し)label3Label
検索ファイル名txtSearchPatternTextBox
コピーされるファイル(見出し)label4Label
ファイル一覧lstFileListListBox
実行btnExecButton

プログラミング

言語:C#

using System.IO;
/// <summary>
/// 実行ボタンクリック処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExec_Click(object sender, EventArgs e)
{
    // コピー元ディレクトリ
    string fromDir = txtFromDir.Text;

    // コピー先ディレクトリ
    string toDir = txtToDir.Text;

    // 検索ファイル名
    string sarchPattern = txtSearchPattern.Text;

    // コピー元ディレクトリから検索ファイル名にマッチするものを取得する
    string[] files = Directory.GetFiles(fromDir,
                                        sarchPattern,
                                        System.IO.SearchOption.AllDirectories);

    // 見つかったファイルをリストボックスに追加する
    lstFileList.Items.AddRange(files);

    // 見つかったファイル分ループする
    foreach (string f in files)
    {
        // ファイルをコピー先ディレクトリにコピーする
        File.Copy(f, Path.Combine(toDir, System.IO.Path.GetFileName(f)), true);
    }

}

実行結果

実行前

実行後

3ファイルコピーされました。

コピー元ディレクトリのTREE

コピーされたファイル

以上です。

コメント

タイトルとURLをコピーしました