static public void Write(data_struct d)
 {
     streamWriter.Write(d.reg + "\t" + d.manufacturer + "\t" + d.aircraft + "\t" + d.type + "\t" + d.entire_type + "  \t\t" + d.delivered + "  \t" + d.status + "\t" + d.airline + "\r\n");
     streamWriter.Flush();
     //streamWriter.Close();
     //fileStream.Close();
 }
        static void Main(string[] args)
        {
            string path_in = "G:\\SoftwareWorkspace\\C#\\aviation_registeration\\Reg\\document\\reg.txt";

            fileStream   = new FileStream("G:\\SoftwareWorkspace\\C#\\aviation_registeration\\Reg\\document\\regg.txt", FileMode.Create);
            streamWriter = new StreamWriter(fileStream, Encoding.Default);

            using (StreamReader sr = new StreamReader(path_in, Encoding.Default))
            {
                string      line;
                int         state = 0;
                data_struct data  = new data_struct();
                data.airline = airline;

                while ((line = sr.ReadLine()) != null)
                {
                    count++;
                    if (line.IndexOf("<a href=") != -1)
                    {
                        if (line.IndexOf("/airframe") != -1)
                        {
                            string[] reg = line.Split(' ');
                            data.reg = reg[10];
                        }
                        else if (line.IndexOf("/production-list") != -1)
                        {
                            string[] s1 = line.Split('>');
                            string[] s2 = s1[1].Split('<');
                            string[] s3 = s2[0].Split(' ');
                            data.manufacturer = s3[0];
                            data.entire_type  = s3[1];
                            string[] s4 = s3[1].Split('-');
                            data.type = s4[0];
                            string[] s5 = s1[2].Split(' ');
                            s5 = s5.Where(s => !string.IsNullOrEmpty(s)).ToArray();
                            int r = 0;
                            if (s5.Length < 3)
                            {
                                data.status = s5[0] + " " + s5[1];
                            }
                            else
                            {
                                if (int.TryParse(s5[2], out r))
                                {
                                    data.delivered = s5[2] + "/" + GetMonth(s5[1]) + "/" + GetDay(s5[0]);
                                    data.status    = s5[3];
                                }
                                else if (int.TryParse(s5[1], out r))
                                {
                                    data.delivered = s5[1] + "/" + GetMonth(s5[0]) + "/" + GetDay("1.");
                                    data.status    = s5[2];
                                }
                            }
                        }
                        else if (line.IndexOf("/correction") != -1)
                        {
                            Write(data);
                            data         = new data_struct();
                            data.airline = airline;
                        }

                        /*switch(state)
                         * {
                         *  case 0:
                         *      state++;
                         *      break;
                         *  case 1:
                         *      string[] reg = line.Split(' ');
                         *      data.reg = reg[10];
                         *      string[] sstr = reg[3].Split('/');
                         *      data.aircraft = sstr[3];
                         *      state++;
                         *      break;
                         *  case 2:
                         *      string[] str = line.Split(' ');
                         *      data.entire_type = str[4].Replace("</a>","");
                         *
                         *      string[] manufacture = str[3].Split('/');
                         *      data.manufacturer = manufacture[2];
                         *
                         *      int r=0;
                         *      if(int.TryParse(str[9],out r))
                         *      {
                         *          data.delivered = str[9] + "/" + GetMonth(str[8]) + "/" + GetDay(str[7]);
                         *          data.status = str[12];
                         *      }
                         *      else
                         *      {
                         *          data.delivered = str[10] + "/" + GetMonth(str[9]) + "/" + GetDay(str[8]);
                         *          data.status = str[13];
                         *      }
                         *
                         *      state++;
                         *      break;
                         *  case 3:
                         *      //string[] str = line.Split(' ');
                         *      state=0;
                         *      Write(data);
                         *      data = new data_struct();
                         *      data.airline = airline;
                         *      break;
                         * }*/
                    }
                }
                streamWriter.Close();
                fileStream.Close();
            }
        }