Come scrivere contenuti di System.Collections.Specialized.StringCollection in un file?

StackOverflow https://stackoverflow.com/questions/9329548

  •  27-10-2019
  •  | 
  •  

Domanda

Ho avuto fortuna a cercare i luoghi ovvie per una risposta al perché utilizzando File.WriteAllLines (); non funziona quando viene emesso uno StringCollection:

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

Codice Omettendo qui che ha popolato infectedLog .......

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

Qualcuno potrebbe neanche dirmi che cosa sto facendo male, o indicarlo nel senso di una spiegazione che farà piacere?

È stato utile?

Soluzione

Il File.WriteAllLines aspetta un IEnumerable<string> (o una string[]), mentre solo StringCollection attrezzi IEnumerable (notare la mancanza di tipo generico). Provare quanto segue:

using System.Linq;
...
File.WriteAllLines(@"C:\CustomSearchInfectedFiles.txt", infectedLog.Cast<string>());

Altri suggerimenti

Prova questo

File.WriteAllLines(@"C:\CustomSearchInfectedFiles.txt", infectedLog.Cast<string>());

Il problema è che StringCollection è una collezione veramente freddo. Non implementa IEnumerable , e non è un array, quindi non c'è sovraccarico WriteAllLines per esso.

Si può fare questo:

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

In alternativa, si potrebbe passare a un più moderno tipo di raccolta, come un List .

        using (StreamWriter w = File.AppendText(@"testfile.txt"))
        {
            foreach (var line in sc)
            {
                w.WriteLine(line);
            }
            w.Close();
        }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top