Dateinamen auslesen



  • Hallo,
    ich möchte ein Programm schreiben, dass alle Dateinamen eines bestimmten Orderns einliest und in einem String^-Array speichert.

    Ich habe leider keine Ahnung wie das in Visual C++ gehen soll.

    Kann mir bitte Jemand helfen?



  • Wenn Du das .Net Framework verwendest kannst Du Dir mal folgendes ansehen:

    array<System::IO::FileInfo^> ^ files;
    	System::IO::DirectoryInfo dirinfo(txt_DirName->Text);
    			files  = dirinfo.GetFiles();
    
    			for each(FileInfo ^ f in files)
    			{
    
    			}
    


  • Knuddlbaer schrieb:

    Wenn Du das .Net Framework verwendest kannst Du Dir mal folgendes ansehen:

    array<System::IO::FileInfo^> ^ files;
    	System::IO::DirectoryInfo dirinfo(txt_DirName->Text);
    	files  = dirinfo.GetFiles();
             FileInfo^ f;
    
    	for each(f in files)
    	{
    
    	}
    

    Danke, dass funktioniert perfekt! 👍

    Noch ne Frage: Ich habe doch all die Dateiname jetzt in dem Array. Kann ich auch gleich die Dateien einlesen und jede Zeile einzeln speichern? 😕
    Am besten in einem String-Array.

    Wie geht das mit .NET?



  • System::Collections::Specialized::StringCollection ^sc = gcnew System::Collections::Specialized::StringCollection();
    for each(f in files)
    {
      String ^fn = System::IO::Path::Combine(dirinfo.FullName, f);
      System::IO::StreamReader sr(fn);
      String ^s = sr.ReadLine();
      while(s != nullptr)
      {
        sc->Add(s);
        s = sr.ReadLine();
      }
    }
    


  • In einem Webcast hiess es mal, dass die Collections ziemlich langsam sind im Vergleich zu Arrays. Trotzdem verwenden?



  • Macan schrieb:

    In einem Webcast hiess es mal, dass die Collections ziemlich langsam sind im Vergleich zu Arrays. Trotzdem verwenden?

    Sagen wir mal so: Dir bleibt nichts andere übrig, wenn Du die Anzahl der Elemente nicht im Vorraus kennst!

    array<String^> ^stringArray = gcnew array<String^>(10);
      stringArray[0] = "Hallo";  // es gibt kein Add!
    

    Aber wenn Du die Anzahl nicht kennst, kannst Du nur eine Collection (ArrayList) verwenden...



  • Ich danke euch. Die Antworten haben mir sehr weitergeholfen. Es funktioniert super.



  • Macan schrieb:

    In einem Webcast hiess es mal, dass die Collections ziemlich langsam sind im Vergleich zu Arrays. Trotzdem verwenden?

    Es gibt in der Klasse File eine Methode ReadAllLines:

    static array<String> ReadAllLines(String^ pfad);

    Die liest die gesamte Textdatei zeilenweise ein und gibt sie als String-Array zurück. Suchst du sowas?

    Nid.


Anmelden zum Antworten