C#将文件读入二维数组
我的项目使用txt文件作为数据库,txt文件中的每一行都类似于“abc、cdf、ghi、zkl” 现在,我从文本文件中逐行读取数据,并将该行按“,”拆分为数组data[] 但是我想把这个数组放到另一个名为datas[]的主数组中,这样我就可以将这个datas[]数组存储在内存中,供整个类使用 我不想修正datas[]数组的大小,因为txt文件记录将不断增长 在这种情况下我能做什么?我试图将datas[]设置为arraylist,然后在其中存储data[]数组,但出现了错误C#将文件读入二维数组,c#,multidimensional-array,arraylist,C#,Multidimensional Array,Arraylist,我的项目使用txt文件作为数据库,txt文件中的每一行都类似于“abc、cdf、ghi、zkl” 现在,我从文本文件中逐行读取数据,并将该行按“,”拆分为数组data[] 但是我想把这个数组放到另一个名为datas[]的主数组中,这样我就可以将这个datas[]数组存储在内存中,供整个类使用 我不想修正datas[]数组的大小,因为txt文件记录将不断增长 在这种情况下我能做什么?我试图将datas[]设置为arraylist,然后在其中存储data[]数组,但出现了错误 class user
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;
}
}
类用户
{
ArrayList userDatas=新的ArrayList();
公共用户()
{
readUsers();
}
public void readUsers()
{
弦线;
StreamReader sr=新的StreamReader(“user.txt”,System.Text.Encoding.Default);
而((line=sr.ReadLine())!=null)
{
ArrayList temp=新的ArrayList();
字符串[]rc=line.Split(“|”);
对于(int i=0;i
使用列表
代替数组列表
,将列表
用于temp,将列表
用于用户数据
填充完毕后,只需调用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=newstreamreader();
列表数据=新列表();
列表数据=新列表();
弦线;
而(!reader.EndOfStream){
line=reader.ReadLine();
data.Add(line.Split(',');
}
字符串[]datas_array=datas.ToArray();
当然,如果你不介意有点可爱的话,你应该可以用LINQ的一行coutesy:
string[][] LinesSplitByComma = File.ReadAllLines("file path").Select(s => s.Split(',')).ToArray();
我现在可以-让我看看你的仍然有效,它只是使用了
ArrayList的通用版本
会更简单、更优雅。再次说明,您遇到了什么错误谢谢,请不要删除您的代码,我正在学习,再次感谢您的帮助不要使用ArrayList()!它现在可以向后兼容旧代码。而且,它看起来像是在明文中存储密码。这是错误的。对密码进行散列(最好使用bcrypt),当用户登录时,对其尝试的密码进行散列并比较散列。
string[][] LinesSplitByComma = File.ReadAllLines("file path").Select(s => s.Split(',')).ToArray();