1.http://tieba.baidu.com/p/2825006787?see_lz=1([Unity3D] 关于txt,xml,json文件的读写,及外部文件(夹)的创建)
NOTE (基本认识):其实.txt,.xml,.json这类文件都属于文本文件,类似的还有.lrc歌词文件,.ini配置文件,.reg注册表文件等等,这类文件所储存的内容都是文本(即为字符串),只是各自有它们自己的格式,便于某些时候专用识别,所以读取txt文本是最基础的文本解析。
基本的txt读取
静态内部读取txt文本:
最简单的方式,建立TextAsset,直接把文本文件拖上去,就可以用了,
public TextAsset TxtFile;
print(TxtFile.text);
这是直接获取文本,也就是string类型的字符串。
Note:txt文本的编码格式,要改为UTF-8格式,否则读不出来,虽然不会报错。
动态内部读取文本:
把txt文件放在resources文件夹,利用Resources.Load加载:
public TextAsset TxtFile;
private string Mytxt;
void Start()
{
Mytxt=(TextAsset)Resources.Load("MyTest").text;
print(Mytxt);
}
外部读取文本:
外部读取文本需要导入System.IO类,主要使用这个类的File类,具体API请查MSDN(https://msdn.microsoft.com/zh-cn/library/system.io(v=vs.80).aspx),这里只是简单的调用读取。要注意的是平台在PC。
下面是一些写好的案例:
string[] ReadAllFile(string FileName)
{
string[] strs;
return strs = File.ReadAllLines(FileName);
}
string ReadALine(string FileName,int linenumber)
{
string[] strs = File.ReadAllLines(FileName);
if(linenumber==0)
{
return "0";
}
else
{
return strs[linenumber - 1];
}
}
void WriteAllFile(string FileName,string txt)
{
string[] str = txt.Split(';');
File.WriteAllLines(FileName,str);
}
void WriteALine(string FileName, string txt,int lineNumber)
{
string[] str = File.ReadAllLines(FileName);
int strLinesLength = str.Length;
string[] strNew = new string[strLinesLength + 1];
bool haveAddLine = false;
for(int i=0;i< strLinesLength + 1;++i )
{
if(i==lineNumber-1)
{
strNew[i] = txt;
haveAddLine = true;
}
else if(!haveAddLine)
{
strNew[i] = str[i];
}
else
{
strNew[i] = str[i - 1];
}
}
File.WriteAllLines(FileName, strNew);
}