Files aus Ordner lesen ohne den Namen dieser zu wissen

smaeusle

Grünschnabel
Hallo, ich bin recht neu hier in dem Forum und hab ein Problem welches ich nicht weiss wie ich es loesen soll.
Ich soll ein Programm schreiben welches in der lage ist automatisch xml Datein einzulesen und auszuwerten. Die ganze Analyse und das einlesen an sich stellt fuer mich nicht das Problem da. Die Stelle an der es bei mir haengt ist das automatische Einlesen der Datein ohne den Namen der Datei explizit zu kennen, denn der Dateiname ist ein Zeitstempel der von einem Server vergeben wird wenn er das xml File versendet. Es waere schoen wenn mir jmd bei diesem Problem helfen koennte.
gruss smaeusle
 
Hi.

Ich nehme mal an, du verwendest Windows. Dann könntest du die FindFirstFile und FindNextFile Funktionen verwenden. :suchen:

Gruß
 
Danke auf jeden Fall mal, ich glaub das hilft mir weiter,
ok, ich hab mich jetzt ma ein wenig damit beschaeftigt und auch recht viele Beispiele mir angeschaut, jedoch bekomme ich immer die Fehlermeldung wenn ich Pfade angebe, dass char* nicht in LPCWSTR gewandelt werden kann. Wenn ich mir aber Beispiele von anderen anschaue, hat da das uach niemand getan, woran kann denn dass liegen, bzw was mache ich falsch?
danke schonmal fuer die Hilfe
 
Zuletzt bearbeitet:
es waere schoen wenn ich noch eine Antwort auf die 2. Frage bekommen koennte, denn ich hab jetzt den ganzen tag daran rumgedoktort, bin aber immer noch nicht viel weiter.
 
Danke auf jeden Fall nochmal fuer die schnell Antwort, obwohl ich es soch richtig immer noch nicht hinbekomme... aber da muss ich mich wohl jetzt alein durchwusrschteln.
gruss
 
hey also t jetzt doch obwohl mir dein beispiel fast mein C laufwerk inklusive allen Datein gekostet hat ; ), eine Frage hab ich aber dann doch noch, wenn ich jetzt den Wert aus der Variablen "ffd.cFileName" auslesen will, dann bekomme ich immer lediglich den ersten Buchstaben, wie kann ich auf den ganzen Variablenwert zugreifen?
Danke und gruss
 
Hi.
hey also t jetzt doch obwohl mir dein beispiel fast mein C laufwerk inklusive allen Datein gekostet hat ; )
Ups.. .:)
eine Frage hab ich aber dann doch noch, wenn ich jetzt den Wert aus der Variablen "ffd.cFileName" auslesen will, dann bekomme ich immer lediglich den ersten Buchstaben, wie kann ich auf den ganzen Variablenwert zugreifen?
Du machst irgendwas falsch. Zeig deinen Code.

Gruß
 
Code:
LPCTSTR dir = (L"p:\\C++\\Datenauswertung\\Debug\\") ;   
		WIN32_FIND_DATA ffd;   
		TCHAR szDir[MAX_PATH];   
		HANDLE hFind = INVALID_HANDLE_VALUE;   
		DWORD dwError=0;    
		_tcscpy(szDir, dir);   
		_tcscat(szDir, TEXT("/*"));    // Find the first file in the directory.    
		hFind = FindFirstFile(szDir, &ffd);    
		if (INVALID_HANDLE_VALUE == hFind)    
		{      // Fehler ... 
			printf("das doof");
			//return dwError;   
		}       // delete all the files and directories in the directory recursively...    
		do   {       
			if (_tcscmp(ffd.cFileName, TEXT(".")) == 0 || _tcscmp(ffd.cFileName, TEXT("..")) == 0) continue;        
			TCHAR absPath[MAX_PATH];       
			_tcscpy(absPath, dir);       
			_tcscat(absPath, TEXT("/"));       
			_tcscat(absPath, ffd.cFileName);        
			if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)       
			{           
				
			}       else       {  
				//char *test;
				//_tcscpy(test, ffd.cFileName);
				printf("%s\n\n", ffd.cFileName);//hier kann ich den gueltigen dateinamen auslesen
			}   
		} while (FindNextFile(hFind, &ffd) != 0);    
		dwError = GetLastError();   
		FindClose(hFind);   
		if (dwError != ERROR_NO_MORE_FILES)    
		{      // Fehler...   
		
		} else {  

						if (!removeDirectory(dir)) 
			{               
				dwError = GetLastError();       
			}   
		}    
		//return dwError;

Hi
Das mein code, oh man das immer peinlich weil da meistens soviel muell mit drin steht, jedenfalls dacht ich das bei der printf anweisung ich ja eigentlich den kompletten dateinamen bekommen muesste, jedoch erscheint genau da nur der erste Buchstabe. Will den Inhalt dann halt an fopen uebergeben um so eine reihe von datein abzuarbeiten.
danke und gruss
 
Hi.

Wenn du UNICODE verwendest, kannst du nicht einfach printf benutzen. Du solltest am besten die entsprechende generische Funktionen verwenden, die in tchar.h definiert sind. Also in dem Fall statt printf die Funktion _tprintf.

Hier http://msdn.microsoft.com/en-us/library/ms860358.aspx findest du eine Tabelle.

Gruß

PS: Warum hast du denn dort noch den removeDirectory Aufruf drin? Du solltest schon erstmal den Code verstehen, bevor du ihn einfach blindlinks übernimmst...
 
Zurück