# ordner auslesen (dateinamen)



## GErD (17. November 2003)

Hallo,
wie der Betreff schon sagt wollte ich fragen wie man die dateinamen der Dateien in einem Ordner ausgeben bzw. in einer Variable speichern kann (sowas wir ls bei linux).


----------



## Thomas Kuse (17. November 2003)

Quelle: http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=6790&lngWId=3


```
//**************************************
// Name: Directory Listing for Windows
// Description:Displays a list of files 
//     and subdirectories in a directory.
// By: koby-GR
//This code is copyrighted and has
// limited warranties.Please see
//http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=6790&lngWId=3
//for details.
//**************************************
/* Directory Listing for Windows by koby
*http://www.codecraft.tk
*
* Displays a list of files and subdirectories in a directory.
* Usage : ls [drive:][path] Specifies drive and/or directory to list.
* Copyright (c) 2003
* koby and www.CodeCraft.tk. All rigths reserved
* Redistributions of source code must retain the above copyright
* notice and the following disclaimer.
*
* this SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
*ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
*IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS for A PARTICULAR PURPOSE
*ARE DISCLAIMED.
*/
#include <stdio.h>
#include <string.h>
#include <windows.h>
void ls(char *path);

    int main(int argc, char *argv[]) {
    	char path[MAX_PATH];
        	if(argc==2) {
        		strcpy(path, argv[1]);
        	}
            	else {
            		GetCurrentDirectory(MAX_PATH, path);
            	}
            	ls(path);
            	return 0;
        }
            void ls(char *path) {
            	WIN32_FIND_DATA FindFileData;
            	HANDLE hFind;
            	char VolumeName[MAX_PATH], FileSys[5];
            	int VolSerNum;
            	GetVolumeInformation(NULL, VolumeName, MAX_PATH, &VolSerNum, NULL, NULL, FileSys, 5);
            	printf(" Volume in drive %c is %s\n", 64+getdrive(), VolumeName);
            	printf(" File System is %s\n", FileSys);
            	printf("\n Directory of %s\n\n", path);
            	strcat(path, "\\*");
            	hFind=FindFirstFile(path, &FindFileData);
                	do {
                		printf("%*s", 30, FindFileData.cFileName);
                		if( FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY )
                			printf("\t<DIR>");
                		if( FindFileData.dwFileAttributes == FILE_ATTRIBUTE_HIDDEN )
                			printf("\t<Hidden>");
                		if( FindFileData.dwFileAttributes == FILE_ATTRIBUTE_COMPRESSED )
                			printf("\t<Compressed>");
                		if( FindFileData.dwFileAttributes == FILE_ATTRIBUTE_SYSTEM )
                			printf("\t<System>");
                		if( FindFileData.dwFileAttributes == FILE_ATTRIBUTE_ENCRYPTED )
                			printf("\t<Encrypted>\n");
                		else
                			printf("\n");
                	}while ( FindNextFile(hFind, &FindFileData) );
                	FindClose(hFind);
            }
```


----------



## GErD (17. November 2003)

Danke.  Wie macht man das dann bei Linux?


----------



## Thomas Kuse (17. November 2003)

Dann nimm halt diese Funktionen:
opendir(); readdir_r() ; closedir()


----------



## GErD (17. November 2003)

Wenn ich jetzt folgende abfrage mach:       

```
if((dir_entry->d_name) != ".") 
{ 
  cout<<"Reading:  "<<dir_entry->d_name<<endl;

}
```
kommt: 
Reading: . 
Reading: . .
Reading: bla.bmp
...
Warum?


----------



## Thomas Kuse (17. November 2003)

d_name ist ein char-array und daher musst du mit *d_name vergleichen

. ist das aktuelle Verzeichnis und .. das eine Ebene höher!
Die beiden Verzeichnisnamen musst du ausfiltern!


----------



## Jasi (7. März 2004)

Kannst du den code mal kommentieren bitte?     

Als Newbie kann man dem nicht ganz folgen.......  

Bitte machs doch mal!  Danke!


Jasi


----------



## Thomas Kuse (8. März 2004)

Auf mehrere Anfragen hin hier nochmal eine compilierbare Version eines directory Listings mit Dateigrößen und Gesamtgröße als Anhang.


----------

