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の個数分回しているのに違和感があったって探したらペアでやる方法があったというのが上のやつです。 ペアで回せるなんて便利ですね。
ちなみに、フォルダパスの指定の仕方は色々ありそう。 もっと良いやり方あったら教えてください…