Frage: Datei in Verzeichnis suchen?

LadyMarion

Mitglied
Hallo,

ich habe mal wieder ein Problem :confused:

Mein Programm soll in einem Verzeichnis eine Datei finden und auf diese zugreifen.

Die gesuchte Datei heißt z.B.:
netz_001.abc

Sie könnte aber auch netz_002.abc oder netz_003.abc usw. heißen.

D.h. sie ist im Prinzip immer nach folgendem Muster aufgebaut:

"festgelegterName_" ZAHLEN ".abc"

Der festgelgte Name wird vorher ausgelesen und das .abc wird auch angegeben, aber wie kann ich die verschiedenen Zahlen festlegen. Ich weiß nur, dass es immer 3 Ziffern sind, aber ob es sich um 001, 002, 003, usw. handelt, kann ich vorher nicht bestimmen.

Gibt es eine Möglichkeit, die Datei nach dem Prinzip netz_*.abc zu suchen?
 
Ja für das problem gbit es eine Lösung. hier im Forum wurde das schon mal diskutiert.

Ich habe das ganze auch schon einmal machen müssen.

Kurz das Prinzip und dann ein bissel Code dazu.

Also du gibts eine oder mehre Suchbedingungen ein, dazu den Pfad indem gesucht weerden soll.

So hier ein bissel code:

Code:
void XML::sucheDatei(std::string datenOrt, std::string suchKriterium){

	
	WIN32_FIND_DATA FData;  
    HANDLE hSearch;// = FindFirstFile("D:\\Report_Performance\\*.*",&FData);  
    BOOL MoreFiles = FALSE;  
    int cnt_dir = 0, cnt_file  = 0; //Zum Zählen von Ordnern und Datein
	
	int j=0;
	//for(j=2;j<=OrdnerAnzahl-1;j++){
	
	std::string suchString;
	std::string removeString;

	suchString.insert(0,datenOrt.data());
	suchString.insert(suchString.length(),"\\");
	//suchString.insert(suchString.length(),Ordnername[j].data());
	//suchString.insert(suchString.length(),"\\");
	suchString.insert(suchString.length(),suchKriterium);

	//printf("suchstring: %s" ,suchString.data());
	
	hSearch = FindFirstFile(suchString.data(),&FData);  

	//printf("\n\nSo jetzt in sucheDatei: %s\n\n",suchString.c_str());


	int i=0;
	
	if (hSearch == INVALID_HANDLE_VALUE){ 
	//printf("-1");
	}
	
	do{
		std::string dateiname;	
		if (FData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY){  
				//Den Ordnernamen ausgeben         
			    //printf("%s\n", FData.cFileName);
				//Ordnername[i]=FData.cFileName;
				//cnt_dir++; // Ordnerzähler um 1 erhöhen 
			} 
			else{
				removeString.erase(0,removeString.length());
				//printf("\ndatei: %s",FData.cFileName);
				
				removeString.insert(0,datenOrt.data());
				removeString.insert(removeString.length(),"\\");
				//removeString.insert(removeString.length(),Ordnername[j].data());
				//removeString.insert(removeString.length(),"\\");
				removeString.insert(removeString.length(),FData.cFileName);

				
				//dateiname.insert(0,suchString.data());
				//dateiname.insert(suchString.length(), FData.cFileName);
				//printf("\nname: %s", removeString.data());
				
				//Ordnername[i]=FData.cFileName;  //Wenn es eine Datei ist nicht mit einlesen
				cnt_file++;

				remove(removeString.data());
			}
	
	i++;
	MoreFiles = FindNextFile(hSearch,&FData);  
	} while (MoreFiles);  //Ende do while
         
    FindClose(hSearch); 

//	}//ende for
	DateiAnzahl=cnt_file;
		
	//Also ich beginne die for Schleife erst bei 2 da die beiden ersten Elemente nicht "wirklich" belegt sind
	//for(i=2;i<=Ordnername[i].length();i++)
	//	printf("\nOrdnername %i: %s",i ,Ordnername[i].c_str());

	//OrdnerAnzahl=cnt_dir-2;  //Ich zieh hier 2 ab da die ersten beiden Sachen nicht mit Einträgen belegt sind

	//fprintf(ausRTK,"%c",'\0');
	
} //ende sucheDatei

So dann viel Spaß damit! Also ein bisschen muss hier jeder selber machen.
 
Zurück