Unityにてテキストファイルを読み書きする方法を紹介します.
以下のBoo スクリプトは,Application.dataPath以下にtest.txtを作成し,Hello World! by StreamWriterと書き込んでファイルを一度閉じた後,それを開いてDebug.Log()にて内容を表示する,というものです.
import UnityEngine import System import System.IO class Test (MonoBehaviour): def test(): try: # FileInfo f as FileInfo = FileInfo(Application.dataPath+"/test.txt") Debug.Log(f.ToString()) # StreamWriter sw as StreamWriter = f.CreateText() sw.WriteLine("Hello World!"); sw.WriteLine("by"); sw.WriteLine("StreamWriter"); sw.Flush() sw.Close() # StreamReader #f = FileInfo(Application.dataPath+"/null.txt") # エラー sr as StreamReader = f.OpenText() s as string = "" while ((s = sr.ReadLine()) != null) : Debug.Log(s); sr.Close() except e as FileNotFoundException: Debug.LogError("$(f.Name) was not found! "+e) except e as IOException: Debug.LogError("Error!"+e)
FileInfoにてファイル名を指定します.この時Unityでは実行環境によってパスが異なってくるので,Application.dataPath 以下に保存することで一貫性を持たせます.
StreamWriterのインスタンスはFileInfo.CreateText()から作成することができますので,これにWriteLine()を実行すればファイルに文字列が書き込まれます.StreamWriterはFlush()してからClose()しましょう.
StreamReaderのインスタンスは,FileInfo.OpenText()から作成することができますので,これからReadLine()を実行して,nullが返ってくるまでwhileでループして一行づつ読み込んでいます.StreamReaderもClose()しましょう.
ファイルが存在しないなど,IO処理に例外はつきものなので,try exceptで囲っておきます.ファイルが見つからなければSystem.IO.FileNotFoundException が発生するので,適宜処理します.ちなみに上記のスクリプトの
#f = FileInfo(Application.dataPath+"/null.txt") # エラー
という行の最初の#を削除して実行すると,
null.txt was not found! System.IO.FileNotFoundException: Could not find file "............../Assets/null.txt".
File name: "............../Assets/null.txt"
というエラーが表示されます.