2017-01-09 5 views
-2

Итак, я писал программу, которая помогала мне контролировать некоторые вещи на работе, я их пишу в .txt-файл, но когда есть файл, присутствующий в каталоге, который я контролирую, он будет поддерживать запись файла в этот текстовый файл, для exmapleC# duplicate in listview

New Text Document.txt - POA Submitted Directory - Current Time: 11:40:15 AM 1/9/2017 | Time Received: 1/9/2017 11:21:16 AM 
New Text Document.txt - POA Directory - Current Time: 11:40:25 AM 1/9/2017 | Time Received: 1/9/2017 11:21:16 AM 
New Text Document.txt - MTM Directory - Current Time: 12:48:28 PM 1/9/2017 | Time Received: 1/9/2017 11:21:16 AM 
New Text Document.txt - MTM Directory - Current Time: 12:49:08 PM 1/9/2017 | Time Received: 1/9/2017 11:21:16 AM 
New Text Document.txt - MTM Directory - Current Time: 12:49:18 PM 1/9/2017 | Time Received: 1/9/2017 11:21:16 AM 

Как я должен держать это повторять?

Вот мой метод для получения листинга каталога

private void POACheck(object sender, EventArgs e) 
{ 
    listView2.Items.Clear(); 
    System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("Z:/FTPRoot/PDCUpload/POA"); 
    foreach (System.IO.FileInfo f in dir.GetFiles("*.*")) 
    { 
     FlashWindow(this.Handle, true); 
     ListViewItem lSingleItem = listView2.Items.Add(f.Name); 
     using (System.IO.StreamWriter file = 
     new System.IO.StreamWriter(@"C:\Users\sisson.chad\Desktop\POA-MTM.txt", true)) 
     { 
      file.WriteLine(f.Name + " - POA Directory - Current Time: " + DateTime.Now.ToString("h:mm:ss tt") + " " + DateTime.Now.ToString("M/d/yyy") + " | Time Received: " + f.LastWriteTime); 
     } 

    } 
} 

Вся помощь ценится, жаль, что я новичок в C#, и я учусь до сих пор.

+0

Opps, извините, являются ли моими тегами хорошо сейчас? –

+0

Одним из способов было бы сохранить список элементов, которые уже были написаны и записать только новые. Пожалуйста, прочитайте [ask], а также возьмите [tour] – Plutonix

+0

Параметр StreamWriter 'true' добавляется вместо создания нового файла. – jdweng

ответ

0

Так что @Plutonix уже дала вам решение.

Сохраните уникальное свойство из каждого файла, который вы ранее посещали с помощью своего сценария в списке (FileInfo.FullName дает вам абсолютный путь, который должен работать). Итерируя через файлы в каталоге, проверьте, находится ли этот файл в этом списке. Если он найден, то просто continue;. Иначе делайте то, что вы делали раньше (если все в порядке).

Если приложение будет перезапущено, содержимое вашего ранее сохраненного списка исчезнет, ​​поэтому я предлагаю также сохранить уникальное свойство в журнале, чтобы вы могли его прочитать после того, как приложение будет инициализировано.

Редактировать: Поскольку POACheck является частным методом, я думаю, что есть игде-то рядом с этим классом, поэтому сделайте список частным полем, которое они могут читать.

+0

как его сохранить? извините, что я очень необычен для C# –

+0

Вам следует создать список, подобный @ user1895086, который вам раньше показывал, единственная разница в том, что это будет поле: 'List visitedFilePaths = new List ()'. Затем вы просто добавляете пути к этому списку 'visitFilePaths' с помощью метода' Add'. Вы можете проверить, содержит ли список Содержит строку с помощью метода «Содержит». Пример: if (visitedFilePaths.Contains (f.FullName)) { continue; } – devilirium

+0

Это все начинает выглядеть как код спагетти для меня, я не думаю, что я его правильно реализую. –

0

Добро пожаловать на C#. А также, до List<T>:

 private void POACheck(object sender, EventArgs e) 
     { 
      listView2.Items.Clear(); 
      System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("Z:/FTPRoot/PDCUpload/POA");    
      var Names = new List<string>(); 
      foreach (System.IO.FileInfo f in dir.GetFiles("*.*")) 
      { 
       if(Names.IndexOf(f.Name) == -1) //-1 result from IndexOf means it's not there. 
       { 
        FlashWindow(this.Handle, true); 
        ListViewItem lSingleItem = listView2.Items.Add(f.Name); 
        using (System.IO.StreamWriter file = 
        new System.IO.StreamWriter(@"C:\Users\sisson.chad\Desktop\POA-MTM.txt", true)) 
        { 

         file.WriteLine(f.Name + " - POA Directory - Current Time: " + DateTime.Now.ToString("h:mm:ss tt") + " " + DateTime.Now.ToString("M/d/yyy") + " | Time Received: " + f.LastWriteTime); 
         Names.Add(f.Name); 
        } 
       } 

      } 
     } 
+0

Новый текст Document.txt - Каталог POA - Текущее время: 2:12:08 PM 1/9/2017 | Получено: 1/9/2017 11:21:16 AM Новый текст Document.txt - Каталог POA - Текущее время: 2:12:18 PM 1/9/2017 | Получено время: 1/9/2017 11:21:16 AM Новый текст Document.txt - Каталог POA - Текущее время: 2:12:28 PM 1/9/2017 | Получено время: 1/9/2017 11:21:16 AM –

+0

Это все еще тот же файл, спасибо за попытку! –