我的项目使用txt文件作为db,txt文件中的每一行都是“abc,cdf,ghi,zkl”
现在我从文本文件中逐行读取并将该行拆分为数组[] by“,” 但我想把这个数组放到另一个名为datas []的主数组中,所以我可以将这个数据[]数组存储在内存中供全班使用,
我不想修复数据[]数组大小,因为txt文件记录将会增长。
在这种情况下我该怎么办?我试图将数据[]作为arraylist然后存储data []数组,但错误显示。
class user
{
ArrayList userDatas = new ArrayList();
public user()
{
readUsers();
}
public void readUsers()
{
string line;
StreamReader sr = new StreamReader("user.txt", System.Text.Encoding.Default);
while ((line = sr.ReadLine()) != null)
{
ArrayList temp = new ArrayList();
string[] rc = line.Split('|');
for (int i = 0; i < rc.Length; i++)
{
temp.Add(rc[i]);
}
userDatas.Add(temp);
}
}
public bool login(string ic, string password)
{
for (int i = 0; i < userDatas.Count; i++)
{
ArrayList temp = userDatas;
if ((temp[1] == ic) && (temp[2] == password))
{
return true;
}
}
return false;
}
}
答案 0 :(得分:2)
当然如果你不介意有点可爱,你应该能够用LINQ的一句话来做这件事:
string[][] LinesSplitByComma = File.ReadAllLines("file path").Select(s => s.Split(',')).ToArray();
答案 1 :(得分:0)
而不是ArrayList
,使用List<string>
表示临时,List<string[]>
表示userDatas
。
完成填充后,只需调用userDatas.ToArray()
此外,您的错误可能在此处:
ArrayList temp = userDatas;
if ((temp[1] == ic) && (temp[2] == password))
{
return true;
}
在引用索引1和2之前,您不是首先要检查temp是否有3个或更多元素。另外,为什么只创建temp以将其分配给userDatas?为什么不说:
if (userDatas.Count() >= 3 && (userDatas[1] == ic) && (userDatas[2] == password))
return true;
修改强>
根据要求,这是我的原始代码,虽然你已经编写了很多代码,但是这里(你的代码最初没有显示):
StreamReader reader = new StreamReader();
List<string[]> datas = new List<string[]>();
List<string> data = new List<string>();
string line;
while (!reader.EndOfStream) {
line = reader.ReadLine();
datas.Add(line.Split(','));
}
string[] datas_array = datas.ToArray();