ReadDir unter Linux -> zu viele verzeichnisse?
Übersicht

![]() |
UNZBetreff: ReadDir unter Linux -> zu viele verzeichnisse? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guten Abend,
ich habe das Gefühl, das Linux (Kubuntu) wohl mein Programm abwürgt, wenn ich in zu vielen Ordnern stöbere. Hier mal ein kleines Testprog Code: [AUSKLAPPEN] SuperStrict Framework brl.filesystem Import brl.standardio Global cntDirs:Int Global cntFiles:Int 'iterateDir("F:/Spiele/Proggen/Blitzmax/mod") iterateDir("/home/aas/Proggen/BlitzMax/") Print "FINISHED" Function iterateDir(dirpath$) Local dir:Int Local file$ If FileType(dirpath) <> FILETYPE_DIR Return EndIf cntDirs:+ 1 If cntDirs 'Mod 100=0 Print "DIR:" + dirpath Print "Dirs:" + cntDirs EndIf dir = ReadDir(dirpath) Repeat file = NextFile(dir) If file If file <> "." And file <> ".." cntFiles:+ 1 If cntFiles Mod 1000= 0 Print "Files:" + cntFiles EndIf 'Print "FILE:" + file Select FileType(dirpath+"/"+file) Case FILETYPE_DIR iterateDir(dirpath +"/" +file) End Select EndIf EndIf Until file = "" End Function Das Programm geht die Ordner eines Verzeichnises durch und auch deren Unterordner. Das doofe ist jetzt, das bei ca. 1010 Ordnern 'ne Fehlermeldung kommt. Auf Windows läuft es aber locker durch. |
||
Das muss besser als perfekt! |
![]() |
UNZBetreff: CloseDir() |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe gerade gut 1std an diesem Problem gesessen und 5min nachdem ich diesen Thread eröffne, als ich den Rechner runterfahre, fällt mir ein, dass man so einen Ordner doch eigentlich auch schließen müsste.
Rechner wieder angemacht, CloseDir() gesucht und gefunden, gestartet und gefreut ![]() |
||
Das muss besser als perfekt! |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weierhin, sollte man mit Recursion aufpassen, irgendwann ist der Stack voll. | ||
between angels and insects |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Na, das muss aber ein ordentliches durcheinander sein, wenn man mit einer rekursiven ordner-durchwühlsache nen runtimeerror aufgrund des vollen stacks erzeugt.
aber hier isses ja auch noch einfach zu fixen: Einfach eine whileschleife, die eine liste abarbeitet. Stanartmäßig ist nur der erste ordner drinne. Die while läuft an, holt den ordner-string aus der liste und durchsucht diesen. wird ein weiterer ordner gefunden, wird der neue, totale pfad in die liste geschmissen. Bumms, rekursion gelöst, selbes ergebnis. Und das beste: so schön abstrakt schreibbar, das man 2 tage später nichtmehr durchsteigt hihi |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group