Autor Beitrag
flumer
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 09.05.06 18:52 
Hallo,

Ich bin es wieder...
Habe ein problem mit Directory.GetFiles

Also der nutzer soll per FolderBrowserDialog einmal einen ordner auswählen welches dann gespeichert wird für die nächste nutzung.
Das habe ich so gemacht:


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
    private void button2_Click(object sender, System.EventArgs e)
    {
      FolderBrowserDialog fb = new FolderBrowserDialog(); 
          
      if(fb.ShowDialog() == DialogResult.OK) 
      { 
        textBox2.Text = (fb.SelectedPath.ToString());
      }
    }


Dann soll das program nach jedem start aus dem gewählten Ordner unbekannte dateien mit der endung *.pk3 in *.xxx umbenennen. Ich weiß das man die dateien mit Directory.GetFiles auslesen muß aber wie????????
Nur wie, hilfe bitte.
Schulteatq
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 16



BeitragVerfasst: Di 09.05.06 19:31 
Bleistift als Anregung (nicht geprüft auf Funktionsweise:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
// Dateien im Verzeichnis einlesen
string[] files = Directory.GetFiles(dir, @"*.pk3");

// nun jede einzelne Datei durchgehen
foreach (string file in files)
  {
  // Datei verschieben (= umbenennen)
  File.Move(file, file.Substring(0, file.Length - 3) + @"xxx")
  }
flumer Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 09.05.06 21:35 
Dankeschön das hat soweit geklappt,
wenn ich nun aber bekannte dateien wo der name bekannt ist wie z.B. test.xxx klappt es nicht er gibt mir dann die meldung:

Der Typ oder Namespace 'fb' konnte nicht gefunden werden. Möglicherweise fehlt eine Anweisung oder ein Assemblyverweis.

aus fb.SelectedPath.ToString

Vieleicht zur klärung erst sollen alle in *.xxx umbenannt werden und dann einige die bekannt sind wieder zurück, es ist zwar etwas umständlich aber wohl nicht anders machbar.
Schulteatq
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 16



BeitragVerfasst: Di 09.05.06 21:43 
user profile iconflumer hat folgendes geschrieben:
Dankeschön das hat soweit geklappt,
wenn ich nun aber bekannte dateien wo der name bekannt ist wie z.B. test.xxx klappt es nicht er gibt mir dann die meldung:
Der Typ oder Namespace 'fb' konnte nicht gefunden werden. Möglicherweise fehlt eine Anweisung oder ein Assemblyverweis.
aus fb.SelectedPath.ToString


ohne code hilft das mir/uns wenig. hast du am anfag den using System.IO Assembly Verweis gesetzt?
Inwieweit sollen Dateien bereits bekannt sein?

Eine Sache, die mir gerade aufgefallen ist die nicht sonderlich hübsch ist, ist die doppelte vergabe von "file", einmal als Variable und einmal als statische Klasse zur Dateimanipulation.
änder das mal lieber in sowas dieser Art:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
// Dateien im Verzeichnis einlesen
string[] files = Directory.GetFiles(dir, @"*.pk3");

// nun jede einzelne Datei durchgehen
foreach (string afile in files)
   {
  // Datei verschieben (= umbenennen)
  File.Move(afile, afile.Substring(0, afile.Length - 3) + @"xxx")
  }
flumer Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 09.05.06 22:11 
Hallo

Der using System.IO assembly wurde gesetzt....

ausblenden 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:
    private void button2_Click(object sender, System.EventArgs e)
    {
      FolderBrowserDialog fb = new FolderBrowserDialog(); 
          
      if(fb.ShowDialog() == DialogResult.OK) 
      { 
        textBox2.Text = (fb.SelectedPath.ToString());
      }

      string[] files = Directory.GetFiles((fb.SelectedPath.ToString()), @"*.pk3");  

 
      foreach (string afile in files) 
      {   
        File.Move(afile, afile.Substring(0, afile.Length - 3) + @"xxx"); 
      }
    }
    private void button3_Click(object sender, System.EventArgs e)
    {
string[] files = Directory.GetFiles((fb.SelectedPath.ToString()), @"www.xxx");  

 
foreach (string afile in files)  
  {   
  File.Move(afile, afile.Substring(0, afile.Length - 3) + @"www.pk3");  
  } 

    }


Mit der fehler meldung :
Der Typ oder Namespace 'fb' konnte nicht gefunden werden. Möglicherweise fehlt eine Anweisung oder ein Assemblyverweis.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 09.05.06 22:16 
user profile iconSchulteatq hat folgendes geschrieben:
Eine Sache, die mir gerade aufgefallen ist die nicht sonderlich hübsch ist, ist die doppelte vergabe von "file", einmal als Variable und einmal als statische Klasse zur Dateimanipulation.
Ist doch kein Problem: die Variable heißt "file", die Klasse "File" => Verwechslungen ausgeschlossen.

@flumer: Du verwendest fb in button3_click, obwohl die Variable nur in button2_click deklariert ist.
Schulteatq
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 16



BeitragVerfasst: Mi 10.05.06 18:00 
user profile iconKhabarakh hat folgendes geschrieben:
user profile iconSchulteatq hat folgendes geschrieben:
Eine Sache, die mir gerade aufgefallen ist die nicht sonderlich hübsch ist, ist die doppelte vergabe von "file", einmal als Variable und einmal als statische Klasse zur Dateimanipulation.
Ist doch kein Problem: die Variable heißt "file", die Klasse "File" => Verwechslungen ausgeschlossen.


für den compiler ja, aber für den Menschen mit ungeübtem Blick, fällt der Unterschied in der groß-kleinschreibung nicht auf, und er hält die beiden sachen für das gleiche...
Wie gesagt, funzt ist aber nicht "hübsch" (meiner Ansicht nach)...


@flumer: desweiteren sollte die ganze Verschiebeaktion mit in den if-Block rein, ansonsten wird das auch ausgeführt, wenn nix in der FBD ausgewählt wurde und es kommen unschöne fehler. ^^
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 10.05.06 19:33 
user profile iconSchulteatq hat folgendes geschrieben:
user profile iconKhabarakh hat folgendes geschrieben:
user profile iconSchulteatq hat folgendes geschrieben:
Eine Sache, die mir gerade aufgefallen ist die nicht sonderlich hübsch ist, ist die doppelte vergabe von "file", einmal als Variable und einmal als statische Klasse zur Dateimanipulation.
Ist doch kein Problem: die Variable heißt "file", die Klasse "File" => Verwechslungen ausgeschlossen.


für den compiler ja, aber für den Menschen mit ungeübtem Blick, fällt der Unterschied in der groß-kleinschreibung nicht auf, und er hält die beiden sachen für das gleiche...
Wenn du mit "ungeübt" "ungeübt in C#" meinst, gebe ich dir Recht. Ansonsten sollte das kein Problem für den Leser sein und wird auch von der Mehrheit der .Net-Programmierer - einschließlich mir - oft bewusst so eingesetzt.

ausblenden C#-Quelltext
1:
File.Move(afile, afile.Substring(0, afile.Length - 3) + @"xxx");					

Bis jetzt mag das noch gutgehen, aber ich bin immer mehr für eine generische Lösung.
ausblenden C#-Quelltext
1:
Path.ChangeExtension(file, ".xxx");					
flumer Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Sa 13.05.06 17:11 
Ähmm ja danke hmm solange es funktioniert :-)

Aber wie krige ich es hin das die Pfad angabe gespeichert bleibt damit man nicht jedes mal den pfad neu angeben muss??