繁体   English   中英

从txt文件中读取每一行作为Array

[英]Reading from txt file each line as Array

我正在开发Winform应用程序,它将员工数据作为4个元素的数组,并使用SEPARATOR(“,”)正确地将这些数据保存到一行中的文本文件中。

我的问题是如何使它加载任何行数据并识别分隔符(“,”),以便我可以通过名称的第一项读取所有数据?

public partial class Form1 : Form
    {
        string[] data = new string[4];
        string name;
        string job;
        string salary;
        string join;

        #region Save


void save()
    {
        if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "")
        {
            MessageBox.Show("Please Fill All Fields", "error");
        }

        FileStream file = new FileStream("info.txt", FileMode.Append, FileAccess.Write);
        StreamWriter wr = new StreamWriter(file);
        wr.WriteLine(String.Join(",", data));
        wr.Flush();
        wr.Close();
        comboBox1.Items.Add(data[0]);
        textBox1.Clear();
        textBox2.Clear();
        textBox3.Clear();
        textBox4.Clear();

    }
    #endregion

    #region Search
    void search()
    {
        FileStream file = new FileStream("info.txt", FileMode.Open, FileAccess.Read);
        StreamReader sr = new StreamReader(file);
        sr.ReadLine(string.//what should i do here?
        string[] lines = File.ReadAllLines("info.txt");
        data[0].CompareTo(comboBox1.SelectedItem);
        sr.ReadLine();
        if (data[0] == name)
        {
            textBox1.Text = (data[0]);
            textBox2.Text = (data[1]);
            textBox3.Text = (data[2]);
            textBox4.Text = (data[3]);
        }
    } 
    #endregion  

您只需再次读取该文件,并在您选择的分隔符上使用Split

        var textLines = File.ReadAllLines("");

        foreach (var line in textLines)
        {
            string[] dataArray = line.Split(',');
        }

最后工作,行拆分为数组数据,每个都添加在右侧文本框中:

void search()
        {
            FileStream file = new FileStream("info.txt", FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(file);
            sr.ReadLine();
            var textLines = File.ReadAllLines("info.txt");

            foreach (var line in textLines)
            {
                string[] dataArray = line.Split(',');
                dataArray[0].CompareTo(comboBox1.SelectedItem);
                if (dataArray[0] == comboBox1.SelectedItem.ToString())
                {
                   textBox1.Text = (dataArray[0]);
                   textBox2.Text = (dataArray[1]);
                   textBox3.Text = (dataArray[2]);
                   textBox4.Text = (dataArray[3]); 
                }
            }
        } 

非常感谢李伟先生

[DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section,
                 string key, string def, StringBuilder retVal,
                int size, string filePath);
 /// <summary>
        /// read value from given section and key
        /// </summary>
        /// <param name="Section">string</param>
        /// <param name="Key">string</param>
        /// <returns>string</returns>
 public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString(Section, Key, "", temp,
                                            255, this.path);
            return temp.ToString();

        }

要调用此功能,请参阅下面的代码

 string[] sBENCHNO=new Strin[256];
     sBENCHNO = ini.IniReadValue("Sextion", "Key");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM