Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Saving from List<T> to txt

I want my program to read from two text files into one List<T>. The List<T> is sorting and cleaning duplicates.

I want the List<T> to save (after sorting and cleaning) to a txt file.

But when I looked in the result txt file, I found this message:

System.Collections.Generic.List`1[System.String]

Does anyone have an idea how I could fix this error?

Here is my code:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO;  namespace Uniqpass {     class Program     {         static void Main(string[] args)         {              String pfad = "C:\\Dokumente und Einstellungen\\Bektas\\Desktop\\test\\";             String pfad2 = "C:\\Dokumente und Einstellungen\\Bektas\\Desktop\\test\\";             String speichern = "C:\\Dokumente und Einstellungen\\Bektas\\Desktop\\test\\ausgabe.txt";             String datei = "text1.txt";             String datei2 = "text2.txt";              try             {                  //Einlesen TxT 1                 List<String> pass1 = new List<String>();                 StreamReader sr1 = new StreamReader(pfad + datei);                 while (sr1.Peek() > -1)                 {                      pass1.Add(sr1.ReadLine());                 }                 sr1.Close();                 //Einlesen TxT 2                 StreamReader sr2 = new StreamReader(pfad2 + datei2);                 while (sr2.Peek() > -1)                 {                     pass1.Add(sr2.ReadLine());                 }                 sr2.Close();                  List<String> ausgabeListe = pass1.Distinct().ToList();                 ausgabeListe.Sort();                  ausgabeListe.ForEach(Console.WriteLine);                  StreamWriter file = new System.IO.StreamWriter(speichern);                 file.WriteLine(ausgabeListe);                 file.Close();               }             catch (Exception)             {                 Console.WriteLine("Error");             }              Console.ReadKey();         }     } } 
like image 910
Jon Cylo Avatar asked Jan 16 '12 17:01

Jon Cylo


People also ask

How do I save a list to a text file in C#?

The simplest way to save a list of strings to a file is to use File. WriteAllLines().

Does file WriteAllLines overwrite?

Remarks. If the target file already exists, it is overwritten. The default behavior of the WriteAllLines method is to write out data using UTF-8 encoding without a byte order mark (BOM).

How do you write an object data to a text file in C#?

C# write text with StreamWriter's WriteLine txt"; using var sw = new StreamWriter(path); sw. WriteLine("old falcon"); Console. WriteLine("data written to file"); The example writes one line to the text file.


1 Answers

There's a handy little method File.WriteAllLines -- no need to open a StreamWriter yourself:

In .net 4:

File.WriteAllLines(speichern, ausgabeListe); 

In .net 3.5:

File.WriteAllLines(speichern, ausgabeListe.ToArray()); 

Likewise, you could replace your reading logic with File.ReadAllLines, which returns an array of strings (use ToList() on that if you want a List<string>).

So, in fact, your complete code could be reduced to:

// Input List<String> data = File.ReadAllLines(pfad + datei)     .Concat(File.ReadAllLines(pfad2 + datei2))     .Distinct().ToList();  // Processing data.Sort();   // Output data.ForEach(Console.WriteLine);  File.WriteAllLines(speichern, data); 
like image 82
Heinzi Avatar answered Sep 29 '22 02:09

Heinzi