Как записать содержимое System.Collections.Specialized.StringCollection в файл? - PullRequest
4 голосов
/ 17 февраля 2012

Мне не повезло, когда я искал очевидные места, чтобы найти ответ на вопрос, зачем использовать File.WriteAllLines ();не работает при выводе StringCollection:

static System.Collections.Specialized.StringCollection infectedLog = new System.Collections.Specialized.StringCollection();

Пропуск кода здесь, который заполнил зараженный журнал .......

File.WriteAllLines(@"C:\CustomSearchInfectedFiles.txt", infectedLog);

Может кто-нибудь сказать мне, что я делаюнеправильно или укажете мне объяснение, которое порадует вас?

Ответы [ 4 ]

8 голосов
/ 17 февраля 2012

File.WriteAllLines ожидает IEnumerable<string> (или string[]), тогда как StringCollection реализует только IEnumerable (обратите внимание на отсутствие универсального типа). Попробуйте следующее:

using System.Linq;
...
File.WriteAllLines(@"C:\CustomSearchInfectedFiles.txt", infectedLog.Cast<string>());
1 голос
/ 17 февраля 2012

попробуйте

File.WriteAllLines(@"C:\CustomSearchInfectedFiles.txt", infectedLog.Cast<string>());
0 голосов
/ 17 февраля 2012
        using (StreamWriter w = File.AppendText(@"testfile.txt"))
        {
            foreach (var line in sc)
            {
                w.WriteLine(line);
            }
            w.Close();
        }
0 голосов
/ 17 февраля 2012

Проблема в том, что StringCollection - действительно холодная коллекция.Он не реализует IEnumerable и не является массивом, поэтому для него нет перегрузки WriteAllLines.

Вы можете сделать это:

File.WriteAllLines(theFileName, infectedLog.Cast<string>());

Или вы можете переключиться на более современный тип коллекции, например, List .

...