未経験からC#プログラマーとして就職するにあたってできた方が良いことについてまとめていきます。
今回は、その第二弾「フォルダ操作」になります。
どこの職場に行っても、C#プログラマーならば使うであろうスキルなのでマストで身に付けていきましょう!
なぜフォルダ操作が必要になるのか?
ファイル操作と同様C#プログラマーとして仕事をしていくのであれば、避けては通れない道です。
エラーファイルを作成するフォルダやバックアップ用のフォルダを作成したり、削除したり
主にファイル操作と一緒に扱うことが多いです。
私の経験上、関わったプロジェクトのほとんどでフォルダ操作はあったので
ぜひ、身に付けていきましょう。
フォルダ操作
フォルダの作成
ここではサンプルとしてログ用のフォルダを作成します。
string folderPAth = @"C:\WorkSpace\Logs";
try
{
System.IO.Directory.CreateDirectory(folderPAth);
}
catch (Exception e)
{
return;
}
変数のfolderPathに@が使われていますが、これはエスケープ文字「¥」「\」を無効にさせます。
なので、@なしでコーディングしようと思ったら
string folderPath = "C:\\WorkSpace\\Logs"とコーディングしましょう。
フォルダの削除
指定したフォルダの削除を実行します。
string folderPAth = @"C:\WorkSpace\Logs";
try
{
System.IO.Directory.Delete(folderPAth);
}
catch (Exception ex)
{
return;
}
フォルダの移動
string from = "";// 移動元
string to = "";// 移動先
try
{
System.IO.Directory.Move(from, to);
}
catch (Exception ex)
{
return;
}
フォルダのコピー
コピーはSystem.IOで用意されていないので、簡単に自作したものになります。
まず、フォルダコピーの関数を作る前にどんな工程が必要か考えてみましょう。
- コピー先のフォルダを作成
- コピー元のフォルダ内にファイルがある場合は、ファイルをコピーして1で作成したコピー先にコピーする。
この2つを踏まえて、関数を作成してみました。
private void FolderCopy(string from, string to)
{
try
{
//コピー先のフォルダを作成
System.IO.Directory.CreateDirectory(to);
//コピー元のフォルダ内にファイルがある場合は、ファイルをコピーして1で作成したコピー先にコピーする。
string[] files = System.IO.Directory.GetFiles(from);
//コピー元のフォルダにファイルがない場合は終了
if (0 >= files.Length) return;
//ある場合はループをファイル数だけ回し、一つずつコピーする
for(int i =0; i < files.Length; ++i)
{
// コピー元のファイル名を取得
string fileName = System.IO.Path.GetFileName(files[i]);
//コピー先のフルパスを作成
string toPath = System.IO.Path.Combine(to, fileName);
//コピー先にファイルがない場合、ファイルをコピー
if (false == System.IO.File.Exists(toPath))
{
System.IO.File.Copy(files[i], toPath);
}
}
}
catch (Exception e)
{
return;
}
}
他のコードに比べると複雑ですが、コメントを一つずつ読んでいけば
何をやっているかわかってくると思います。
始めは理解できなくても大丈夫です。
やってくうちにどんどん読めるようになっていきます。絶対に!
まとめ
今回は、フォルダの操作(作成、削除、移動、コピー)をメインに紹介しました。
フォルダ操作は、ファイル操作と合わせて行うことが多いので以下の記事も合わせて読んで頂けるとより理解が深まると思います。
少しでも駆け出しエンジニアの助けになれれば幸いです。