2013-10-05 175 views
1

我正在使用Winform应用程序,它将员工数据作为4个元素的数组 ,并将这些数据正确保存在一行中的文本文件中,并与SEPARATOR(“,”)..从txt文件读取每行数组

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

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 

回答

3

你可以简单地再次读取该文件,并在您选择

 var textLines = File.ReadAllLines(""); 

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

我没有和跟随它用行动F11,成功得到了所有项目,但..仍然没有将这些数据写入到文本框中的! –

1

的分隔符使用分割终于摸索,线分离到阵列中的数据,在右边的文本框中添加 每:

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]); 
       } 
      } 
     } 

非常感谢社社长伟利

0
[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");