Windows Verzeichnis auflisten
-
Hallo
Könnte mir jemand folgenden Codeauschnitt erklären ?
Würde es so klappen den Dateinamen in ein Array zu speichern?dirHandle = opendir("c:\\Ordner"); if ( dirHandle != NULL ) { //Alle Ordner/Dateien auslesen for (int i = 0; 0 != ( dirEntry = readdir( dirHandle ) ); i++ ) { // Dateinamen in Array dateiname[i] = dirEntry->d_name; i++; dircnt = dircnt + 1; }Noch eine kleine Frage: Wäre es möglich einen kompletten Ordner per Winsock zu versenden ?
Gruss Name

-
Hier bist du auf jeden Fall im falschen Forum. Wohin möchtest du verschoben werden? Du fragst zwar nach Windows, dein Code zu der Frage ist aber für Linux, daher bin ich mir gerade nicht sicher, was du überhaupt willst.
-
falsches Forum
bei WinApi wärst du besser aufgehoben.
-
Der Code funktionierte auch unter Windows
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Name123 schrieb:
Der Code funktionierte auch unter Windows
Ok, wenn du das sagst. Ich dachte bisher, das seien POSIX Befehle. Wenn es die unter Win auch gibt, dann wirst du hier geholfen.
-
Zu ganzen Ordner über Winsock senden: kann ich den Ordner in ein Zip File packen und dann wieder entpacken ?
-
opendir? In Zusammenhang mit der WinApi habe ich das noch nicht gehört...Die Ergebnisse von google lassen eher vermuten, dass du mit PHP programmierst?
Falls du es dennoch wissen möchtest, es geht (natürlich) auch mit der WinApi.
FindFirstFile und FindNextFile (bitte googlen) sind die Stichwörter:// MeineKlasse könnte so aussehen: class MeineKlasse { private: // public Member egal std::string name; // Dateiname/OrdnerName bool isdir; // Ordner/Datei // optional SYSTEMTIME-Strukturen zur Speicherung des Erstellens, Modifizierens, des letzten Zugriffs // und, und, und... }; bool GetDir(const std::string& name, std::vector<MeineKlasse>& ordnerinfo) { // name ist der Name des Verzeichnisses WIN32_FIND_DATA data; // HANDLE hdl = FindFirstFile((name+TEXT("/*")).c_str(),&data); if(hdl==INVALID_HANDLE_VALUE) // Ordner existiert nicht return(false); do // seltene Gelegenheit, bei der eine fussgesteuerte Schleife besser ist { MeineKlasse datei; // vorher wie oben beschrieben definieren // data.dwFileAttributes liefert Attribute wie Ordner/Datei/System/versteckt etc // data.cFileName liefert den Ordner/Dateinamen // datei kann nun dem vector angehängt werden }while(FindNextFile(hdl,& data)); FindClose(hdl); // Zerstörung return true; }Hier ist der MSDN-Eintrag für WIN32_FIND_DATA.
Eine Zip-Funktionalität ist natürlich möglich, es sollte aber bedacht werden, dass es je nach Größe der Dateien eine beträchtliche Zeit fürs Enkodieren / Dekodieren draufgeht. Ich denke auch nicht, dass das Dekodieren während des Empfangs bzw. das gleichzeitige Enkodieren und Senden möglich ist.
Naja, wie auch immer, ich nutze fürs En-/Dekodieren von zip-Ordnern XZip / XUnzip.
-
Vicious Falcon schrieb:
Eine Zip-Funktionalität ist natürlich möglich, es sollte aber bedacht werden, dass es je nach Größe der Dateien eine beträchtliche Zeit fürs Enkodieren / Dekodieren draufgeht. Ich denke auch nicht, dass das Dekodieren während des Empfangs bzw. das gleichzeitige Enkodieren und Senden möglich ist.
Naja, wie auch immer, ich nutze fürs En-/Dekodieren von zip-Ordnern XZip / XUnzip.Danke erstmal für den Code und erklärung!
Zu XZip/ XUnzip:
Wenn ich versuche das Projekt zu Kompiliern kommt bei mir immer folgende Fehlermeldung
[Linker error] undefined reference to `__dyn_tls_init_callback'
Ich habe nur XZip.cpp zum Projekt hinzugefügt
Gruss Name123
-
Was mache ich Falsch?
if(CreateZip("temp.zip", 0, ZIP_FILENAME) != 0) { std::cout<<"Zip Archiv erstellt!" << std::endl; } else { std::cout <<"Zip Archiv konnte nicht erstellt werden" << std::endl; }