2017-06-12 36 views
-2

我研究所有相關的標題/主題到這個問題,但似乎沒有解決我的問題..它產生'Seperated_File.txt',但它是一個完全空白的文本文件。感謝您的回覆。c#將我的數據表保存到一個[txt]文件

修訂版(溶液)

 string[] lines = File.ReadAllLines(@"d:\Processed_Text.txt"); 
     DataTable dt = new DataTable(); 

     dt.Columns.Add("IP Address"); 
     dt.Columns.Add("Date"); 
     dt.Columns.Add("Time"); 
     dt.Columns.Add("GMT"); 
     dt.Columns.Add("Method"); 
     dt.Columns.Add("Resource"); 
     dt.Columns.Add("Port"); 
     dt.Columns.Add("Bytes"); 
     dt.Columns.Add("Services"); 
     dt.Columns.Add("Destination"); 
     dt.Columns.Add("Operating System"); 

     foreach (string line in lines) 
     { 
      string[] split = line.Split(' ', ':'); 


      split = split.Where(r => !string.IsNullOrWhiteSpace(r)).ToArray(); 

      Foo foo = new Foo(); 

      foo.IPAddress = split[0]; 
      foo.Date = split[1]; 
      foo.Time = string.Format("{0}:{1}:{2}", split[2], split[3], split[4]); 
      foo.GMT = split[5]; 
      foo.Method = split[6]; 
      foo.Resource = split[7]; 
      foo.Port = split[8]; 
      foo.Bytes = split[9]; 
      foo.Service = split[10]; 
      foo.Destination = split[11]; 
      foo.OS = split[12]; 

      dt.Rows.Add(foo.IPAddress, foo.Date, foo.Time, foo.GMT, foo.Method, foo.Resource, foo.Port, foo.Bytes, foo.Service, foo.Destination, foo.OS); 
     } 

      using (StreamWriter sw = new StreamWriter(@"d:\Seperated_Text.txt")) 
      foreach (DataRow dr in dt.Rows) 
     { 
      Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10}", dr[0], dr[1], dr[2], dr[3], dr[4], dr[5], dr[6], dr[7], dr[8], dr[9], dr[10])); 
      sw.WriteLine(String.Join(",", dr.ItemArray)); 
      sw.WriteLine(dr); 

     } 
     Console.ReadLine(); 
    } 
+1

請張貼您的實際代碼。你已經把結果與'vresult'混合在一起,你提到'sw',但它看起來像你實際上是指'objWriter'。編輯爲 – itsme86

+1

,抱歉給您帶來不便。以爲我想展示什麼樣的嘗試。 –

+0

更新:我的代碼是解決方案..自己得到它。感謝您的回覆。 –

回答

0

爲了訪問一個DataRow中的數據,你需要做的:

foreach (DataRow row in table.Rows) 
      { 
       Console.WriteLine($"{row.ItemArray[0]} | {row.ItemArray[1]} | {row.ItemArray[2]}"); 
      } 

或者如果你喜歡:

foreach (DataRow row in table.Rows) 
    { 
     Console.WriteLine($"{row["IP Address"]} | {row["Date"]} | {row["Time"]}"); 
    } 
+0

那麼,從這裏我可以直接將它保存爲.txt文件嗎? –

+0

那麼你需要使用一個文件編寫器,但是。你的問題似乎主要是因爲你沒有調用任何可見的數據,所以當你編寫.txt文件時,沒有什麼可寫的。 – gilliduck

+0

我使用streamwriter修復了它......謝謝你的回覆:) –

0

該文件爲空的原因是因爲它已經存在,您不是追加使用StreamWriter的第二個參數:

bool append = true; 
using (StreamWriter sw = new StreamWriter(@"d:\Seperated_Text.txt", append)) 
+0

爲什麼我在我的文本文件的每一行都得到System.Data.DataRow?任何想法 –

+0

嘗試使用toString:'dr [0] .ToString()' –

+0

它表示將annot從'method group'轉換爲'object':/ –