Entwickler-Ecke

WinForms - File.Exists + Array + List


Arthuro - Di 06.11.07 13:41
Titel: File.Exists + Array + List
Guten Tag,

Seit mir nicht sauer wenn ich was falsch gemacht hab ist mein erster Post. Also zu meiner Frage ich möchte gerne das parfiles in der zweiten if anweisung abgefragt wird leider krieg ich aber dort nicht den dateinamen raus, wer weiß auch wo immer, liegt wohl an der list. Kann ich das auch noch irgendwie anders machen bzw. was mich falsch ? Ich lese über ein Array einen Ordner ein wo ganz viele datei sind und ich möchte diese nun rausfiltern das er mir nur die datein anzeigt mit der dateiendung rar. und dann in einer listview anzeigt. Wie mache ich das ?


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
                    string[] _Datein;
                    string filename = dlgFileOpen.SelectedPath.ToString();
                    List<string> parfiles = new List<string>();
                    
                    _Datein = Directory.GetFileSystemEntries(filename);
                    _Datein.Length.ToString();

                    foreach (string in_datein in _Datein)
                    {
                        if (Path.GetExtension(in_datein) == ".rar")
                        {
                            parfiles.Add(in_datein);
                            //parfiles.ToArray();
                        }

                        if (File.Exists(parfiles.ToString()))
                        {
                           //Hier ist noch eine Zeile aber die ist Geheim *g*

                            BuildList(parfiles.ToString());
                        }
                        else
                        {
                            MessageBox.Show("Keine .rar Datei");
                        }
                    }
                }
            }

            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            } 
        }
            int BuildList(string parfiles)
            {
                ListViewItem liste = null;
                liste = listView1.Items.Add(parfiles.ToString());

                if (File.Exists(parfiles.ToString()))
                {
                    liste.SubItems.Add("Ja");
                }
                else
                {
                    liste.SubItems.Add("Nein");
                }

                return 0;
            }


Christian S. - Di 06.11.07 14:45

Hi und :welcome:!

Was Du versuchst, ist, eine List<String> in einen String umzuwandeln und dann zu schauen, ob es eine Datei gibt, die so heisst. Das kann nicht funktionieren ;-) Ebenso schiebst Du die String-Repräsentation der gesamten Liste die BuildList-Methode, auch das macht keinen Sinn.

Ich hab mal ein paar Kommentare ran geschrieben:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
 string[] _Datein; //"_" am Anfang ist schlechter Stil. Außerdem heisst es "Dateien" mit e vorm n.
                    string filename = dlgFileOpen.SelectedPath.ToString();
                    List<string> parfiles = new List<string>();
                    
                    _Datein = Directory.GetFileSystemEntries(filename); //Directory.GetFiles(..) liefert direkt nur Dateien
                    _Datein.Length.ToString(); //Wozu?

                    foreach (string in_datein in _Datein) //"_"!
                    {
                        if (Path.GetExtension(in_datein) == ".rar")
                        {
                            parfiles.Add(in_datein);
                            //parfiles.ToArray();
                        }

                        if (File.Exists(parfiles.ToString())) //File.Exists(in_datein) sollte es sein?
                        {
                           //Hier ist noch eine Zeile aber die ist Geheim *g*
                            BuildList(parfiles.ToString()); //auch hier als Parameter nur in_datein?
                        }
                        else
                        {
                            MessageBox.Show("Keine .rar Datei"); //wirklich? Die Prüfung auf ".rar" wird in der vorigen if-Anweisung gemacht
                        }
                    }
                }
            }

            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            } 
        }
            int BuildList(string parfiles)
            {
                ListViewItem liste = null;
                liste = listView1.Items.Add(parfiles.ToString()); //parfiles ist schon ein String

                if (File.Exists(parfiles.ToString())) //Hier nochmal dasselbe prüfen wie oben?
                {
                    liste.SubItems.Add("Ja");
                }
                else
                {
                    liste.SubItems.Add("Nein");
                }

                return 0;
            }


Ausprobiert hab ich den Code allerdings nicht, weiß also nicht, ob ich alles gefunden habe ;-)


Arthuro - Di 06.11.07 14:59

Danke, bin erstaunt über die Antwort, in anderen Foren wird man ja direkt nieder gemacht und so ausführlich hätte ich das gar nicht erwartet *g*

Vielen Dank ich werde das gleich mal durchgehen habe es aufjeden fall jetzt geschafft in dem ich die if anweisung ganz weglasse und dafür eine zweite foreach nehmen und somit den dateinamen kriege.

Gruß Arthuro


Christian S. - Di 06.11.07 15:02

user profile iconArthuro hat folgendes geschrieben:
Danke, bin erstaunt über die Antwort, in anderen Foren wird man ja direkt nieder gemacht und so ausführlich hätte ich das gar nicht erwartet *g*
Gern geschehen ;-)

user profile iconArthuro hat folgendes geschrieben:
Vielen Dank ich werde das gleich mal durchgehen habe es aufjeden fall jetzt geschafft in dem ich die if anweisung ganz weglasse und dafür eine zweite foreach nehmen und somit den dateinamen kriege.
Hm. Klingt umständlich, zeig mal her :lupe: