読者です 読者をやめる 読者になる 読者になる

明日こそ、定時

定時に帰りたい社畜SEが、定時で帰れた時の暇つぶしに読める記事を綴っています。雑記。好きなこといろいろと…

Dictionaryクラスを使ってファイル名とバイナリーデータを返却する

スポンサードリンク

初めてDictionaryクラスを使いました。

仕事で色々必要になってきたC#

勉強も兼ねて書き留めておこうとおもいます。

using System;
using System.Collections.Generic;
using System.IO;

public class Copy
{
    public  Dictionary<String,Byte[]> FileInfo(String folderPath)
    {
        //Dictionaryクラスの宣言
        Dictionary<string, Byte[]> dictionaryData =
            new Dictionary<string, Byte[]>();

        //パスを指定し、ファイルの名前をパスごと配列へ格納
        string[] files = System.IO.Directory.GetFiles(
            folderPath, "*", SearchOption.AllDirectories);

        foreach (String filePath in files) {
            //Dictionaryクラスへファイル名とバイナリデータをセットし格納
            dictionaryData.Add(Path.GetFileName(filePath),  File.ReadAllBytes(folderPath));
        }
        //ファイル名とバイナリデータがセットされ返却
        return dictionaryData;

    }
}

返却されたデータはDictionary<String,Byte>型なので、KeyがString、valueがByteです。

あとは煮るなり焼くなり好きにするって感じ。

ちなみに、指定したフォルダにコピーをするならこんな感じ。

        foreach (KeyValuePair<string, Byte[]> pairData in dictionaryData) {

            //copyPathはコピーしたファイルを置きたいフォルダパス
            String path = copyPath + pairData.Key;

      //ここでバイナリデータを入れたファイルを生成
            File.WriteAllBytes(path, pairData.Value);
        }

どっかの記事で書いてあったけど、foreachで処理を回すときにkeyの個数分回しているのに違和感があったって探したらペアでやる方法があったというのが上のやつです。 ペアで回せるなんて便利ですね。

ちなみに、フォルダパスの指定の仕方は色々ありそう。 もっと良いやり方あったら教えてください…