Verzeichnis auslesen?

buba

Mitglied
Hallo!

Ich bin grade an meinem ersten visual c++ .net Projekt und habe schon riesen Probleme.
Ich brauche den Pfad von allen Dateien und Ordnern die in einem Ordner liegen, auch in den unter Ordnern.
Wie kann ich das machen einen Ordner komplett auslesen und den Inhalt in ein array speichern?
Habe es mit FindFirstFile versucht aber da kommt immer der Fehler
-->"FindFirstFile": Bezeichner wurde nicht gefunden.
Weis jemand einen anderen weg?
 
Hi Norbert Eder!
Ich wollte damit den Papierkorb und die Temps auslesen um die Dateien zu überschreiben geht das auch mit "Direcrory.GetFiles"? Ich bekomme immer eine Fehler meldung

Eine nicht behandelte Ausnahme des Typs "System.IndexOutOfRangeException" ist in Tool.exe aufgetreten.

Zusätzliche Informationen: Der Index war außerhalb des Arraybereichs.

was mache ich falsch?
 
Du greifst auf einen Index eines Arrays oder einer Liste zu, die es nicht gibt. Du solltest beachten, dass der Index in C# bei 0 beginnt und nicht bei 1.
 
Kannst du mir sagen was ich da falsch mache?

Code:
private: System::String ^cccPapierkorbPfadccc(String ^Partition){
			
			// PapierkorbPfad zusammen stellen
			String ^Papierkorb = Partition;
			Papierkorb += "RECYCLER\\"; 
			return Papierkorb;
			
		 }

private: System::Void ButtonSClean_Click(System::Object^  sender, System::EventArgs^  e) {
			
			array<String ^> ^Datei = System::IO::Directory::GetFiles(cccPapierkorbPfadccc("c:\\"));
			for(int i = 0; i<sizeof(Datei)/sizeof(String ^);i++){
				//remove(Datei[i]);
				this->InfoText->Text = "Datei:" + Datei[i];
				
			}
		}
 
Hi,

Ich glaub, deine Berechnung der Größe funktioniert nicht so ganz.
Nutzt doch das entsprechende Property der Array-Klasse:
C++:
int length = Datei-->Length;
 
Jetzt habe ich doch noch ein Problem.
Wie kann ich einen String in Char umwandeln?

Dateien[i] ist string
remove() braucht char

Habe schon gegoogelt aber hat alles nichts gebracht.


Code:
array<String ^> ^Dateien = System::IO::Directory::GetFiles(cccPapierkorbPfadccc("c:\\"),"*.*",IO::SearchOption::AllDirectories);
			
			
			int DateiArrayLength = Dateien->Length;
			for(int i=0;i<DateiArrayLength;i++){

				this->InfoText->Text = "Datei\n" + Dateien[i];
				remove(Dateien[i]);
				

				}
 
Hi

Ein String ist auch nur ein Char-Array.
Aber was hast du mit der Methode remove vor? Eine Datei löschen?
Dann solltest du eher File.Delete nutzen!
Nach deiner Beschreibung, sieht es eher aus, als ob die Funktion ein Zeichen löscht.
Du solltest nicht mehr die "alten" Funktionen von C++ nutzen, wenn du unter .NET arbeitest. Das .NET Framework bietet die für die meisten Anwendungsfälle die passenden Klassen und Methoden
 
Hallo ich habe noch eine frage.
Möchte eine ListBox mit den Festplatten füllen und habe es mit
Code:
this->FestplattenListBox->Items->AddRange(System::IO::DriveInfo::GetDrives());
probiert aber der listet mir die ganzen Laufwerke auf und ich will nur die Fesstplatten.
Kennt ihr eine einfache Lösung?
 

Neue Beiträge

Zurück