!!!ファイル入出力 ファイル入出力は、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行のテキストを読み込みます。 ---- {{lastmodified}}