Unity3D《一看就明白系列》之讀取Txt (一)
策劃寫Excel ---> 程式解析Excel為Text(letter) --->程式讀取Txt
檔案路徑:
Appliction.dataPath 專案資源路徑
Application.streamingAssetsPath
PC:專案資源路徑下的streamingAssets資料夾(需要手動建立同名資料夾)“這個目錄只能用WWW讀取(PC特例也可以用檔案讀取去讀(FileStream)),且不能修改(PC可以修改)”
Android:安裝在一個assets資料夾
如果想要把一些程式隨檔案打包到,即在手機端可以檢視,則應該它們放到這一個目錄之下。
IOS:Doucment/app
Application.persistentDataPath:
可讀可寫檔案目錄
在不同的平臺上這個路徑是不一樣的
文件操作流程:
-
找到目錄
-
開啟
-
讀寫
-
關閉
void Start()
{
//找到檔案目錄
string path = Application.streamingAssetsPath + "/configer.ll";
//開啟檔案
StreamReader tmpReader = new StreamReader(path);
//開始讀取 "一行行的讀"
string line = tmpReader.ReadLine();
Debug.Log("line=" + line);
//檢視有多少行
int lineCount = int.Parse(line);
for (int i = 0; i < lineCount; i++)
{
string tmpLine= tmpReader.ReadLine();
Debug.Log("第" + i + "條資料為:" + tmpLine);
}
}
現在豐富文字內容
這樣也能讀取一行的內容,但是需要切割(讀取字串)
/// <summary>
/// 對Txt進行讀取操作
/// </summary>
public void ReadStream()
{
//找到檔案目錄
string path = Application.streamingAssetsPath + "/configer.ll";
//開啟檔案
StreamReader tmpReader = new StreamReader(path);
//開始讀取 "一行行的讀"
string line = tmpReader.ReadLine();
//Debug.Log("line=" + line);
//檢視有多少行
int lineCount = int.Parse(line);
string tmpLine;
string[] tmpArray;
for (int i = 0; i < lineCount; i++)
{
tmpLine = tmpReader.ReadLine();
// Debug.Log("第" + i + "條資料為:" + tmpLine);
tmpArray = tmpLine.Split(' ');
//for (int j = 0; j < tmpArray.Length; j++)
//{
// Debug.Log("切割後第" + i + "條資料的第" + j + "個數據元素為" + tmpArray[j]);
//}
PlayerPrefs.SetString(tmpArray[0], tmpArray[1]);
}
tmpReader.Close();
}
現在開始寫入資料(這種寫入方式比較簡單,弊端在於後面寫入的內容會完全覆蓋之前的內容)
/// <summary>
/// 對Txt進行寫入操作
/// </summary>
public void WriteStream()
{
//找到目錄
string path = Application.streamingAssetsPath + "/configer.ll";
//開啟檔案
StreamWriter tmpWrite = new StreamWriter(path);
//進行寫入操作
tmpWrite.WriteLine("88888888");
tmpWrite.WriteLine("admin 123");
//關閉
tmpWrite.Close();
}
FileStream 讀寫的是位元組流
/// <summary>
/// 利用檔案的方式對Txt進行讀取操作
/// </summary>
public void FileWriteStream()
{
//找到目錄
string path = Application.streamingAssetsPath + "/configer.ll";
//開啟檔案
FileStream tmpFileStream = new FileStream(path, FileMode.OpenOrCreate);
//將游標跳到從起點開始偏移兩個位置
tmpFileStream.Seek(2, SeekOrigin.Begin);
//寫入一個位元組流
tmpFileStream.WriteByte(12);
//再寫入一個
tmpFileStream.WriteByte(34);
//關閉檔案讀取
tmpFileStream.Close();
}
解決這個寫入小bug,剛才寫入的是位元組流,我們需要把它們轉化為可以識別的字串
/// <summary>
/// 將Txt中的位元組流轉化為可以識別的內容
/// </summary>
public void ReadByte()
{
//找到目錄
string path = Application.streamingAssetsPath + "/configer.ll";
//開啟檔案
FileStream tmpFileStream = new FileStream(path, FileMode.OpenOrCreate);
//將游標跳到從起點開始偏移兩個位置
tmpFileStream.Seek(2, SeekOrigin.Begin);
int tmpOne = tmpFileStream.ReadByte();
Debug.Log("第一次讀取的內容:" + tmpOne);
int tmpTwo = tmpFileStream.ReadByte();
Debug.Log("第二次讀取的內容:" + tmpTwo);
tmpFileStream.Close();
}
總之:一般就是進行讀操作,除了第一次將Excel轉化為Txt除外,如果要改資料就直接對配置檔案進行修改