2013-03-21 140 views
0

我的问题是关于从文本文件中获取数据。这是对问题的描述:从文本文件中检索数据

我的要求是将每行保存在文本文件中。此文本文件由外部来源以未知间隔进行填充。此外,也是最重要的 - 当文件达到100行(例如)时,它会将这些行归档到不可访问的来源中,并清除其内容。

考虑一下监听器偷看文件并看到它包含10行的情况,监听器将采取这些行并保存它们。然后,在增量时间(例如1秒)后,再次偷看并看到93行。它也保存了未记录的83个。 现在,当听众第三次偷看时,它看到3行。它明显地保存了它们,但是注意到有7行(索引为94-100)没有被听众记录。

它看起来像是在恒定的三角洲偷看不会确保一个错过不会发生。

你会建议如何达到这个要求的最好方法?

+0

尝试与您的节点js c#web应用程序 – 1Mayur 2013-03-21 06:01:20

+0

'FileSystemWatcher'可能会诀窍。 – jordanhill123 2013-03-21 06:14:36

回答

0

这是从文件中取数据线的线,并将其保存到数据库>>

string line; 
      string[] subLine; 
      DialogResult result = openFileDialog1.ShowDialog(); 
      try 
      { 
       if (result == DialogResult.OK) 
       { 
        string file = openFileDialog1.FileName; 
        StreamReader inputData = new StreamReader(file); 
        const int maxRecords = 500; 
        int actualRecords = 0; 
        while ((line = inputData.ReadLine()) != null) 
        { 
         subLine = line.Split(','); 

         try 
         { 


          string unknown = "unknown Fileld"; 
          con.Open(); 
          // int j=subLine.Length; 
          //for(int i=0;i<subLine.Length;i++) 
          if (actualRecords < maxRecords) 
          { 
           int i = 0; 
           //int j=subLine.Length; 
           //int index=subLine.Length-j; 

           // SQL= "insert into tradeFile values('" + ID + "','" + subLine[i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + unknown + "')"; 

           cmd = new SqlCommand("insert into tradeFile values('" + subLine[i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + unknown + "')", con); 
           // cmd = new OleDbCommand("insert into tradeFile values('" + subLine[i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + unknown + "')", con); 
           cmd.ExecuteNonQuery(); 
           actualRecords++; 
           // j--; 

          } 
          else 
          { 
           int i = 0; 
           //int j=subLine.Length; 
           //int index=subLine.Length-j; 
           cmd = new SqlCommand("insert into tradeFile values('" + subLine[i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + unknown + "')", con); 
           //cmd = new OleDbCommand("insert into tradeFile values('" + subLine[i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + subLine[++i].ToString() + "','" + unknown + "')", con); 
           cmd.ExecuteNonQuery(); 
           actualRecords = 0; 
          } 





         } 
         catch (Exception ex) 
         { 
          MessageBox.Show(ex.Message); 
         } 
         finally 
         { 
          con.Close(); 
         } 
         //counter++; 
        } 
        inputData.Close(); 
       } 
      } 

      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 

希望您能申请进一步的逻辑,它会证明有助于你的代码。

+0

嗨谢谢你的答案..请注意,这是不适用于问题我intreduced买谢谢无论如何.. – 2013-03-22 10:37:14

0

你可以抱以某种形式收集的线路,如List<string>和验证List1.Add(line)对集合的容量(100例)使用一段时间或if语句,while(count < capactity)

如果您具有对文件的读/写访问权限,则可以在将行添加到集合后删除这些行。