C#将文件读入二维数组

时间:2011-02-21 03:00:59

标签: c# multidimensional-array arraylist

我的项目使用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;
    }
}

2 个答案:

答案 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();