Entwickler-Ecke

WinForms - OpenFileDialog, mehrere Dateien auslesen und anzeigen lassen


Delete - Fr 19.09.08 11:28
Titel: OpenFileDialog, mehrere Dateien auslesen und anzeigen lassen
Hi,
ich versuche gerade mehrere Dateien (txt) auszulesen und in einem Textfeld anzeigen zu lassen. Ich habs auch mit einer Datei hinbekommen, ich möchte jedoch beide oder mehrere Dateien anzeigen lassen. Weiss einer über welchen Funktionsaufruf das geht? Hier mal nen kurzer Codeauszug:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
if (ofd1.ShowDialog() != DialogResult.OK) return;
            {
               StreamReader reader = new StreamReader (File.OpenRead (ofd1.FileName));

               String line;

               while ((line = reader.ReadLine()) != null)
               {
                textBox1.AppendText(line + "\r\n");
               }
               reader.Close();

            }
            
        }


Grüße


Christian S. - Fr 19.09.08 11:51

Du kannst das doch einfach in einer Schleife für jede ausgewählte Datei machen :nixweiss:


Th69 - Fr 19.09.08 11:59

Statt 'OpenFileDialog.FileName' gibt es dann dafür die Eigenschaft 'FileNames'.

C#-Quelltext
1:
2:
foreach(string sFilename in ofd1.FileNames)
  ...


Delete - Fr 19.09.08 12:16

@Th69:

Sorry für die dumme Frage aber wo schreib ich dann den Code von dir rein? :oops:


bakachan - Fr 19.09.08 13:02

auf dein Code-Beispiel angewand müsste es so aussehen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
if (ofd1.ShowDialog() != DialogResult.OK) return;
            {
               foreach(string sFilename in ofd1.FileNames) 
               {
                   StreamReader reader = new StreamReader (File.OpenRead (sFilename));

                   String line;

                   while ((line = reader.ReadLine()) != null)
                   {
                        textBox1.AppendText(line + "\r\n");
                   }
                   reader.Close();
               }
            }
        }


Delete - Fr 19.09.08 13:17

Super danke, jetzt geht es, jetzt muss ich nur noch schauen wie ich den inhalt der beiden Dateien zeilenweise vergleichern kann.


bakachan - Fr 19.09.08 13:31

ofd1.FileNames ist ja ein Array von Strings(in diesem Fall den Dateinamen)
du kannst auch per Index darauf zugreifen
z.B.: ofd1.FileNames[0] oder ofd1.FileNames[1]


JüTho - Fr 19.09.08 13:47

Warum muss es bloß so kompliziert sein...

Ich schlage vor, den StreamReader zu vergessen und alles in einem Befehl File.Read zu erledigen. Dann kannst Du wahlweise den Text direkt in eine TextBox schreiben oder zum Vergleich in ein String-Array übertragen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
foreach(string sFilename in ofd1.FileNames) 
{
    textBox1.Text = File.ReadAllText(sFilename);
    //  oder, wenn Du alles zusammenfügen willst:
    textBox1.AppendText( File.ReadAllText(sFilename) );
}

//  oder:
string[] allLines = File.ReadAllLines(ofd1.Filename);

Das letzte Verfahren wird natürlich etwas komplizierter, wenn Du ein eigenes Array für jede einzelne Datei verwenden willst; aber vom Prinzip her geht es so.

Gruß Jürgen


Delete - Fr 19.09.08 14:54

Alles klar soweit hab ich das jetzt auch hinbekommen. Aber wie kann ich den Inhalt von zwei TXT Dateien miteinander vergleichen, um herauszufinden in welcher Datei eine Zeile fehlt und welche das ist. Die entsprechende Zeile sollte dann angezeigt werden (mit dem entsprechenden Dateiname). Weiss das einer? Hab gesagt bekommen über Hashtables. Aber da bin ich gerade ein wenig ratlos.

Grüße


Christian S. - Fr 19.09.08 14:56

Hallo!

Da die Frage nichts mehr mit dem ursprünglichen Thema zu tun hat, möchte ich Dich bitten, einen neuen Thread zu eröffnen. Dann kannst Du ihm auch einen passenden Titel geben und ihn in der richtigen Sparte posten. Denn beides passt für die neue Frage ja nicht mehr :-)

Grüße
Christian