- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!ファイル入出力
ファイル入出力は、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 Ststem.Text;
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}}