- 了解测试了下C#读取本地txt文本内容的方法,在Unity中测试读取本地文件,txt文本编码格式为ANSI的时候,中文输出为乱码;txt文本编码格式为unicode、unicode big endian、utf-8的时候,中文能正常输出。
下面为两种读取txt文本内容的方法:(记得引用using System.IO)
string path = "C:\\Users\\hahaha\\Desktop\\test";
//方法一
DirectoryInfo directoryInfo = new DirectoryInfo(path);
FileInfo[] files = directoryInfo.GetFiles();
for (int i = 0; i < files.Length; i++)
{
if(files[i].Extension.Equals(".txt")) //判断是否为txt文件
{
string[] strs = File.ReadAllLines(path + "\\" + files[i].Name); //文本文件完整路径
for (int j = 0; j < strs.Length; j++)
{
Debug.Log("$$$$$$" + strs[j].ToString());
}
}
}
//方法二
string[] strPath = Directory.GetFiles(path, "*.txt"); //只读取txt文件,得到的是一个包含所有txt文件路径的字符数组
foreach(string p in strPath)
{
string[] strs3 = File.ReadAllLines(p); //内容分行读取
for (int j = 0; j < strs3.Length; j++)
{
Debug.Log("&&&&&&" + strs3[j].ToString());
}
string ss = File.ReadAllText(p); //内容全部读取
Debug.Log("%%%" + ss);
foreach(var line in File.ReadLines(p)) //内容分行迭代读取
{
Debug.Log("@@@@" + line.ToString());
}
}
- 在方法二中比较了File的三种读取方法的差异:
(1)ReadAllLines和ReadAllText的区别:
File.ReadAllLines()返回一个字符串数组。每个字符串包含文件的一行。
File.ReadAllText()返回一个包含文件所有行的单个字符串。
(2)ReadAllLines和ReadLines的区别
File.ReadAllLines()方法一次读取整个文件并返回字符串[]数组,因此在使用大型文件时需要花费时间,不推荐用户等待,直到返回整个数组.
File.ReadLines()返回一个IEnumerable< string>并且它一次不读取整个文件,所以当使用大尺寸文件时,这是一个更好的选择.