2015-12-02 78 views
0

正如你可以在標題中看到的,我試圖將列表框項目從多個文件添加到列表框中。但我不知道如何從所有這些文件讀取以及如何刪除雙線(因爲一些txt文件包含相同的信息)。從多個文件添加到列表框並刪除加倍的項目

每天都會添加一個新文件,所以我不能隻手動讀取它們。

我迄今爲止代碼:

所有的
string directory = System.AppDomain.CurrentDomain.BaseDirectory; 
     DirectoryInfo dinfo = new DirectoryInfo(directory); 
     FileInfo[] Files = dinfo.GetFiles("*.txt"); 
+0

什麼樣的格式都在文件嗎?如何將文件中的文本分割爲列表框中的項目,是否存在分隔符? –

+0

@RyanSearle文件是文本文件。列表框的每個項目都是單獨的一行。 –

回答

0

首先,你需要確定每一個文件,你需要閱讀。

一旦你有所有的文件,你需要從每個文件讀取數據到某種形式的存儲,例如DataTable。

填充DataTable後,您需要使用數據填充ListBox。

+0

而這正是我的問題。如果你看看我的代碼,你會發現我最後用「.txt」標識了所有的文件。但是每天都會添加一個新文件,所以我不能只是手動閱讀它們。 –

+0

當一個文件被添加(想必在.txt格式)一旦執行該代碼將被讀出。如果你想設置將在每天的特定時間運行的後臺程序,然後你問一個不同的問題。 –

0

從你已經這麼遠,它看起來像你的下一個步驟將是從每個文件的收集數據(我們可以處理之後刪除重複)。

因此,或許:

HashSet<something> myCollection = new HashSet<something>(); 
// perhaps <something> is just a string? 

foreach (var file in Files) 
{ 
    // Collect what you need and pop it in the collection 
} 

// Remove duplicates 

爲了得到信息出來的文件,你可能需要一個StreamReader

重複刪除重複嘗試HashSets

0

你可以試試這個代碼:此代碼的所有獨特的數據將被存儲在lstData ,您可以使用綁定控件這個

string directory = System.AppDomain.CurrentDomain.BaseDirectory; 
        DirectoryInfo dinfo = new DirectoryInfo(directory); 
        FileInfo[] Files = dinfo.GetFiles("*.txt"); 

        List<string> lstData = new List<string>(); 

        foreach (var file in Files) 
        { 
         using (StreamReader sr = File.OpenText(file.FullName)) 
         { 
          string s = String.Empty; 
          while ((s = sr.ReadLine()) != null) 
          { 
           if (!lstData.Contains(s)) 
           { 
            lstData.Add(s); 
           } 
          } 
         } 
        }