Dateiname auslesen
-
Hi @ all,
wie kann ich denn die Dateinamen aller Dateien in einem Ordner auslesen
und in strings kopieren???Gruß
-
MSDN: CFileFind
In der FAQ steht bestimmt auch was dazu
-
Hallo goochie !
Ich würde es statt mit einem statischen String-Array mit einem flexibleren CArray machen:
#include "afxtempl.h" // wird für CArray benötigt
Diese Codezeile wird in stdafx.h eingefügt um auf CArrays zugreifen zu können.
CArray<CString, CString> FileList; // Dynamische Array-Liste für Filenamen WIN32_FIND_DATA fd; // Datenstruktur definieren CString sPath = _T("C:\\ASM\\"); // Zielpfad als CString speichern HANDLE hFind = ::FindFirstFile(sPath + "*.*",&fd); // und erstes File im Verzeichnis suchen while(::FindNextFile(hFind,&fd) == TRUE) // ist noch eine Datei vorhanden? if(!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) // wenn kein Directory dann weiter FileList.Add(fd.cFileName); // Filename in das CArray einfügen
Dieser Codeschnipsel füllt ein lokales CArray namens FileList mit allen Filenamen im Verzeichnis C:\ASM\. Die Deklaration <CString, CString> beim CArray bedeutet mit welchem Datentyp es "gefüttert" wird und welchen Datentyp es wieder "ausspucken" soll.
for (int nIndex = 0; nIndex < FileList.GetCount(); nIndex++) // alle Filenamen im Array abarbeiten ((CListBox*)GetDlgItem(IDC_LIST1))->AddString(FileList.GetAt(nIndex)); // und in eine ListBox ausgeben
Diese zwei Zeilen gibt den Inhalt des CArray in einer ListBox aus.
Gruß MacReeg
[ Dieser Beitrag wurde am 20.09.2002 um 15:46 Uhr von MacReeg editiert. ]
-
CFileFind ff; ff.FindFile(strPathIn); strAllFile.Empty(); while (ff.FindNextFile()) { //alle Dateinamen werden in strAllFile übergeben und durch Semikolon getrennt strAllFile += ff.GetFileName(); strAllFile += ";"; }
Das wäre eine Möglichkeit
-
Ein Semikolon ist eine schlecht Idee, da es ja Bestandteil vom Dateiname haben kann. Wenn dann schon eher ein '|'.
Oder einfach ein CStringArray;
-
CFileFind find; CStringArray files; CString appname; BOOL bContinue = find.FindFile(ORDNER); while(bContinue > 0) { bContinue = find.FindNextFile(); appname = find.GetFileName(); if (appname == "." || appname == "..") { } else { files.Add(appname); } }
esay to do...