使用文件对话框读取文件并保存到列表中<>



我正在尝试读取文本文件并将信息存储到列表中<>。

到目前为止,我设法从文件中读取字符串并将其拆分,但无法将信息存储到 List<> 上。也许我试图在一个功能下做太多事情。

using System.IO;
private void openFileDialog_Click(object sender, EventArgs e)
        {
            if (myOpenFileDialog.ShowDialog() == DialogResult.OK) ;
            using (FileStream fStream = File.OpenRead(myOpenFileDialog.FileName))
            {
                StreamReader reader;
                reader = new StreamReader(fStream);
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    string[] playerInfo = line.Split(';');
                    int ID = int.Parse(playerInfo[0]);
                    string firstName = playerInfo[1];
                    string lastName = playerInfo[2];
                    DateTime dob = DateTime.Parse(playerInfo[3]);
                    List<Player> players = new List<Player>
                    players.add(new Player(id, firstName, lastName, dob);
                }
            }
        }

当我检查 MessageBox.Show 时,文件中的行数为 0...也许我的list.add代码在错误的地方。感谢您的帮助和时间

每次迭代新行时都会创建一个新列表,这可能就是您没有获得正确行数的原因。

我还看到您的代码中有一些 sintax 错误,我会说您没有直接从源代码复制/粘贴代码,这就是这些错误的原因(Add 方法是大写的,您在初始化 List 时错过了括号(

工作代码如下所示:


List<Player> players = new List<Player>();
while ((line = reader.ReadLine()) != null) {
    string[] playerInfo = line.Split(';');
    int ID = int.Parse(playerInfo[0]);
    string firstName = playerInfo[1];
    string lastName = playerInfo[2];
    DateTime dob = DateTime.Parse(playerInfo[3]);
    players.Add(new Player(id, firstName, lastName, dob);
}

如果您想更全面地访问该列表,您可以通过以下方式执行此操作:假设您的类名是 Sample:


public class Sample {
    // Declare the list as a private field
    private List<Player> players;
    // Constructor - Creates the List instance
    public Sample() {
        players = new List<Player>();
    }
    private void openFileDialog_Click(object sender, EventArgs e) {
        players.Clear(); //Clears the list
        if (myOpenFileDialog.ShowDialog() == DialogResult.OK) ;
        using (FileStream fStream = File.OpenRead(myOpenFileDialog.FileName)) {
            StreamReader reader;
            reader = new StreamReader(fStream);
            string line;
            while ((line = reader.ReadLine()) != null) {
                string[] playerInfo = line.Split(';');
                int ID = int.Parse(playerInfo[0]);
                string firstName = playerInfo[1];
                string lastName = playerInfo[2];
                DateTime dob = DateTime.Parse(playerInfo[3]);
                players.Add(new Player(id, firstName, lastName, dob);
            }
        }
    }
}

以这种方式声明列表,您将能够从同一类中的其他方法获取列表的值。

最新更新