黙々とC#

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

ファイルの入出力

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

ファイルの入出力

ファイル(特にテキストファイル)を読み書きしたい場合には、System.IO名前空間のFileクラス.aspx)を利用します。

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

以下で紹介するメソッドを利用する限りは、ファイルを開く・閉じるといった操作は別途必要ありません。

ファイルの読み出し

File.ReadAllLinesメソッドでは、テキストファイルの各行を一文字列とした、文字列型の配列が返されます。

File.ReadAllTextメソッドでは、テキストファイル全文を一文字列とした、文字列が返されます。

using System.IO;

var filename = "test.txt";
var tempArray = File.ReadAllLines(filename);

var temp = File.ReadAllText(filename);

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

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

using System.IO;
using System.Text;

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

ファイルの書き出し

File.WriteAllText メソッドを使うと、新しいファイルを作成し、第2引数の文字列をそのファイルに書き込んだ後、ファイルを閉じます。既存のターゲット ファイルは上書きされます。

File.WriteAllLines メソッドを使うと、第2引数の文字列型の配列をファイルに書き込みます。

using System.IO;

var filename = "test.txt";
var s = "love C#.";
File.WriteAllText(filename, s);

var filename2 = "test2.txt";
var arr = {"C#", "VBA", "C#", "VBA"};
File.WriteAllLines(filename2, arr);

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

using System.IO;
using System.Text;

var filename = "test.txt";
var s = "love C#.";
File.WriteAllText(filename, s, Encoding.GetEncoding(932));

ファイルの追記

File.AppendAllTextメソッドを使うと、既存ファイルの末尾に引数で指定した文字列を追加します。ファイルがまだ存在しない場合は、ファイルを作成します。第3引数で、文字列エンコーディングを指定可能です。

using System.IO;

var filename = "test.txt";
var s = "love C# Script.";
File.AppendAllText(filename, s);