005
23.03.2006, 11:13 Uhr
~Tester
Gast
|
Das mit der Rekursion habe ich soweit realisiert denke ich und ich erkenne jetzt auch ob es ein ordner ist... aber irgendwie findet er die dateien im ordner nicht! Habe ich den Pfad falsch aufgebaut oder woran kann das liegen?
Vielen Dank nochmal :-)
C++: |
#include <dirent.h> #include <stdio.h> #include <stdlib.h>
Lesen(DIR *,FILE *);
main() { DIR * dir_p; FILE * pwFile; dir_p = opendir("."); pwFile = fopen ("m:\myfile.txt","ab"); Lesen (dir_p, pwFile); fclose (pwFile); closedir(dir_p);
return 0; }
Lesen(DIR * dir_p, FILE * pwFile) {
struct dirent * dir_entry_p; FILE * pFile; long lSize; char * buffer; char FileInfo[128];
printf("WHILE SCHLEIFE START\n");
while( NULL != (dir_entry_p = readdir(dir_p))) { printf("\n\nGOT ITEM %s \n", dir_entry_p->d_name); if ( NULL != opendir(dir_entry_p)) { printf("**ordner**\n"); printf("REKURSION START\n"); printf("LINK IST => %s \n",dir_entry_p); Lesen(dir_entry_p, pwFile); printf("REKURSION BEENDET\n"); } else { printf("**Datei**\n"); } //eine Datei zum lesen öffnen pFile = fopen (dir_entry_p->d_name,"rb"); if ((pFile!=NULL) && !(strstr(dir_entry_p->d_name,"dir.exe"))) { printf("OPENED => %s \n",dir_entry_p->d_name); //Dateigröße und Größe für Puffer bestimmen fseek (pFile , 0 , SEEK_END); lSize = ftell (pFile); rewind (pFile); printf("EST. PUFFER => %ld \n",lSize); //Dateigröße,Pfadinformationen in Archiv schreiben sprintf(FileInfo, "%s%ld", dir_entry_p->d_name, lSize); fwrite (FileInfo,1,strlen(FileInfo),pwFile); //Speicher für Puffer anfordern buffer = (char*) malloc (lSize); if (buffer != NULL) { //Daten aus aktueller Datei in den Puffer lesen fread (buffer,1,lSize,pFile); //Daten von Puffer in Archiv schreiben fwrite (buffer,1,lSize,pwFile); printf("WRITE PUFFER TO FILE => %ld \n",lSize); //Datei schliessen fclose (pFile); printf("CLOSE FILE => %s \n",dir_entry_p->d_name); //Puffer leeren free (buffer); printf("FREE PUFFER"); } else { //Wenn kein Speicher angefordert werden konnte.. printf("NO PUFFER THERE => %s \n",dir_entry_p->d_name); } } else { //Wenn Datei nicht geöffnet werden konnte printf("NO FILE ACCESS! => %s \n",dir_entry_p->d_name); }
} }
|
|