ファイル入出力
ファイル入出力は、C#の標準的な機能で実装できる。
要 : using System.IO;
ファイル書き出し
FileStream f = new FileStream("test.txt", FileMode.Create, FileAccess.Write); BinaryWriter writer = new BinaryWriter(f); writer.Write(100); writer.Write(0.5); writer.Write("test"); writer.Close();
Unityの対象プロジェクトの直下に「test.txt」を出力。
この場合は順番に、int型/double型/文字列型のデータを出力します。
BinaryWriterを使用すると、テキストだけを出力してもバイナリ形式のファイルになります。
Unityのプロジェクトでは「Assets」フォルダ内に関係するデータが入るので、 "Assets/test.txt"のようなパスを指定したほうがよいかもしれません。
ファイルの存在をチェック
ファイルの存在確認は「File.Exists」関数を使用します。
if (File.Exists("test.txt")) { // ファイルが存在する. }
ファイル読み込み
FileStream f = new FileStream("test.txt", FileMode.Open, FileAccess.Read); BinaryReader reader = new BinaryReader(f); if (reader != null) { int iVal = reader.ReadInt32(); double dVal = reader.ReadDouble(); string str = reader.ReadString(); reader.Close(); }
Unityの対象プロジェクト直下の「test.txt」から情報を読み込みます。
出力した順番の型で読み込んでます。
注意点として、float型を保存して読み込むような場合には
float fDat = 0.5f; writer.Write((double)fDat);
のようにキャストしてdoubleとして格納。読み込み時に
float fDat = (float)reader.ReadDouble();
のようにdoubleデータとして読み込んだ後にfloatにキャスト。
のようにしないと、「writer.Write(fDat);」ではfloatとして格納、「reader.ReadDouble();」はdoubleとして読み込み、となってしまい、読み込むデータがずれてしまいます。
任意のテキストを書き出し
要 : using System.IO; using System.Text;
「StreamWriter」を使用することで、テキストを出力できます。
FileStream f = new FileStream("test.txt", FileMode.Create, FileAccess.Write); Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); StreamWriter writer = new StreamWriter(f, sjisEnc); writer.WriteLine("Line1"); writer.WriteLine("Line2"); writer.WriteLine("Line3"); writer.Close();
この場合は、ShiftJISで3行のテキストを出力してます。「Encoding.GetEncoding("UTF-8")」とするとUTF-8での出力になります。
これは普通のテキストファイルになります。
追加でテキストを書き出し
要 : using System.IO; using System.Text;
ログを1つのファイルに出力する場合などには、FileStream生成時に第二引数で「FileMode.Append」を指定します。
FileStream f = new FileStream("logfile.txt", FileMode.Append, FileAccess.Write); Encoding utf8Enc = Encoding.GetEncoding("UTF-8"); StreamWriter writer = new StreamWriter(f, utf8Enc); writer.WriteLine("Line1"); writer.WriteLine("Line2"); writer.Close();
この場合は、何回か上記の処理を呼ぶと上書きではなく、追加でテキストファイル末尾に新しいテキストが追加されます。
任意のテキストを読み込み
「StreamReader」を使用することで、テキストを読み込めます。
FileStream f = new FileStream("test.txt", FileMode.Open, FileAccess.Read); StreamReader reader = new StreamReader(f); if (reader != null) { while (!reader.EndOfStream) { string str = reader.ReadLine(); print (str); } reader.Close(); }
「reader.EndOfStream」でファイル終端の判断、「reader.ReadLine」で1行のテキストを読み込みます。
最終更新時間:2014年06月10日 16時08分00秒