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

黙々とC#

"In a mad world of VBA, only the mad are sane" 『VBAという名の狂った世界で狂っているというのなら私の気は確かだ』


ファイル/フォルダの操作

本記事は、Excel C# Script入門講座の1記事です。

ファイル/フォルダの操作

ファイルのコピーや削除など、ファイルに関する操作を行う場合には、System.IO名前空間のFileクラス.aspx)を利用します。

また、フォルダの作成や削除など、フォルダに関する操作を行う場合には、System.IO名前空間のDirectoryクラス.aspx)を利用します。

System.IO名前空間はmscorelib内に含まれているため、参照の追加は必要ありません。利用にあたっては、using宣言のみ追加してください。

ファイル操作

ファイルのコピー

第3引数にtrueを指定すると、上書きコピーを実行。

using System.IO;
//既にコピー先にファイルが存在する場合、エラー発生
File.Copy("sample.txt", "copy.txt");
//既にコピー先にファイルが存在する場合、上書き
File.Copy("sample.txt", "copy.txt", true);
ファイルの削除
using System.IO;
File.Delete("sample.txt");
ファイルが存在するかの確認

ファイルが存在する場合true、存在しない場合・もしくはエラーが発生した場合falseが返されます。

using System.IO;
var b = File.Exists(@"sample.txt");
ファイルの移動・名前の変更

ファイルが存在する場合true、存在しない場合・もしくはエラーが発生した場合falseが返されます。

using System.IO;
File.Move(@"sample.txt", @"sample2.txt");

フォルダ操作

フォルダの作成

親フォルダが存在しない場合、自動的に作成する。

既にフォルダが存在する場合は何もしない。

なお、戻り値として、 System.IO.DirectoryInfo型のオブジェクトが返る。このオブジェクトは指定したパスに存在するディレクトリを表す。

using System.IO;
var di = Directory.CreateDirectory(@"C:\TEST\SUB");
フォルダの削除

第2引数にtrueを指定しない限り、空の状態でないと削除されない。

削除対象が見つからない場合はエラーが発生。

using System.IO;
//サブディレクトリ・ファイルが存在する場合削除しない
Directory.Delete(@"C:\TEST");
//サブディレクトリ・ファイルが存在する場合でも削除する
Directory.Delete(@"C:\TEST", true);
フォルダの移動・名前の変更
using System.IO;
Directory.Move(@"C:\TEST\SUB", @"C:\TEST\SUB2");

なお、CreateDirectoryメソッドと異なり、親ディレクトリの自動作成は行わないので注意。

フォルダが存在するかの確認

ディレクトリが存在する場合true、存在しない場合・もしくはエラーが発生した場合falseが返されます。

using System.IO;
var b = Directory.Exists(@"C:\TEST\SUB");
フォルダに含まれるファイルの取得

いずれのメソッドも第2引数で、文字列エンコーディングを指定可能です。

なお、文字列エンコーディングを指定するためのEncodingクラスは、System.Text名前空間に属するため、利用にあたってはusing宣言を追加してください。

using System.IO;
using System.Text;

var filename = "test.txt";
var tempArray = File.ReadAllLines(filename, Encoding.GetEncoding("Shift_JIS"));