Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - DIR

Referenz-Navigation

 

Syntax: DIR[$] ( [Dateiangabe] [, Attributnummer [, Rückgabeattribut]] )
Typ: Funktion
Kategorie: System

DIR gibt die Dateien im aktuellen Arbeitsverzeichnis oder im angegebenen Pfad zurück.

'Dateiangabe' darf auch Pfadangaben und Wildcards enthalten. Die Dateinamen bzw. Verzeichnisse werden mit dem angegebenen Muster verglichen. Durch Wildcards, also Platzhalter, kann es auf mehrere Dateien und/oder Verzeichnisse passen. Folgende Wildcards sind möglich:

Beispielsweise passt die Angabe "a*.b??" auf alle Daten oder Verzeichnisse, die mit einem a beginnen und deren Endung mit einem b beginnt und 3 Zeichen lang ist. Mögliche Ergebnisse wären also z. B. allocate.bas und a.bin

Das Dollarzeichen ($) als Suffix ist optional.

Dateiattribute
'Attributnummer' ist eine Zahl, die angibt, welche Attribute die zurückzugebenden Dateien haben sollen. Sie ist eine Kombination aus folgenden Werten:

WertBedeutungKonstante in der dir.bi
&h00 Normal - keines -
&h01 Schreibgeschützt
Windows: Das Attribut 'Schreibgeschützt' ist gesetzt.
Linux: Die Schreibberechtigung des aktuellen Benutzers und seiner Gruppenzugehörigkeit sowie die globale Schreibberechtigung wird geprüft; root-Berechtigungen des Benutzers werden ignoriert.
fbReadOnly
&h02 Versteckt
Windows: Das Attribut 'Versteckt' ist gesetzt.
Linux: Der Datei-/Verzeichnisname beginnt mit einem Punkt.
fbHidden
&h04 System
Windows: Das Attribut 'System' ist gesetzt.
Linux: Es handelt sich um ein zeichenorientiertes Gerät (character device), ein blockorientiertes Gerät (block device), ein Named Pipe (FIFO) oder ein Unix-Socket.
fbSystem
&h10 Verzeichnis fbDirectory
&h20 Archivierbar
Windows: Das Attribut 'Archiv' ist gesetzt.
Die unter Linux üblichen Dateisysteme unterstützen dies nicht.
fbArchive
&h21 Dateien, die archivierbar oder schreibgeschützt sind fbNormal

Um die angegebenen Konstanten zu nutzen, müssen Sie mittels Befehlsreferenzeintrag#INCLUDE die Datei dir.bi einbinden.
Die oben genannten Eigenschaften können durch eine BefehlsreferenzeintragOR-Verknüpfung kombiniert werden. Der Befehl gibt dann alle Dateien zurück, die in das Muster passen und mindestens ein Attributkriterium erfüllen. Will man also alle schreibgeschützten oder versteckten Dateien auflisten, muss die Attributnummer fbReadOnly OR fbHidden angegeben werden. Als Ergebnis werden hier schreibgeschützte Dateien, versteckte Dateien und schreibgeschützte, versteckte Dateien aufgelistet. Wird 'AttributNummer' ausgelassen, so nimmt FreeBASIC automatisch fbNormal an; dies entspricht einer Liste aller normalen Dateien, inklusive schreibgeschützter und archivierter Dateien.

Wird 'Rückgabeattribut' angegeben, schreibt FreeBASIC an die Speicherstelle, auf die 'Rückgabeattribut' verweist, welche Attribute auf die gefundene Datei oder Ordner tatsächlich zutreffen. Dadurch kann die Ausgabe selektiver gestaltet werden. Wollen Sie beispielsweise eine Liste aller Dateien in einem Verzeichnis erstellen, die schreibgeschützt sind und entweder archivierbar sind oder als versteckt markiert wurden, so können Sie zunächst mit 'Attributnummer' fbReadOnly OR fbArchive OR fbHidden eine Ausgabe von Dateien erreichen, bei denen mindestens eines der Kriterien erfüllt ist. Mit 'Rückgabeattribut' kann dann geprüft werden, ob die Datei tatsächlich mehrere Kriterien erfüllt; die entsprechende Zeile könnte so aussehen:

IF (rAttr AND fbReadOnly) ANDALSO _
   ((rAttr AND fbHidden) ORELSE (rAttr AND fbArchive)) THEN ...

Beispiel 1: Zwei Dateien anzeigen, die mit "a" beginnen

PRINT DIR("a*", 0)
PRINT DIR()
SLEEP

Beispiel 2: Verwendung der Attributnummer

#INCLUDE "dir.bi"

DECLARE SUB listFiles (filespec AS STRING, attrib AS INTEGER)

SUB listFiles (filespec AS STRING, attrib AS INTEGER)
  ' alle Dateien mit den angegebenen Attributen auflisten
   DIM filename AS STRING

   filename = DIR(filespec, attrib)
   DO
      PRINT SPACE(4); filename
      filename = DIR("", attrib)
   LOOP WHILE LEN(filename)
END SUB

PRINT "Unterordner:"
listFiles "*", fbDirectory

PRINT "archive files:"
listFiles "*", fbArchive

PRINT "Versteckte und/oder Systemdateien, die mit 'a' beginnen:"
listFiles "a*", fbHidden OR fbSystem
SLEEP

Beispiel 3: Alle Dateien und Ordner, die nicht versteckt sind, in einem Array speichern und ausgeben:

#INCLUDE "dir.bi"

sub GetFiles( Array() as string )
  dim as string  s
  dim as integer attr, i
  redim Array(0)

  s = dir("*",, @attr)
  do until s = ""
    if (attr and fbHidden) = 0 then
      i += 1
      redim preserve Array(i)
      Array(i) = s
    end if
    ' Da hier geprüft wird, ob das gewünschte Dateiattibut zu jeder
    ' Datei gesetzt ist, muss @attr bei jedem Aufruf übergeben werden.
    s = dir("",, @attr)
  loop
end sub

dim dateien() as string
GetFiles dateien()

for i as integer = 1 to ubound(dateien)
  print i, dateien(i)
next
sleep

Unterschiede zu QB:

Plattformbedingte Unterschiede:

Unterschiede zu früheren Versionen von FreeBASIC:

Unterschiede unter den FB-Dialektformen:
In der Dialektform Befehlsreferenzeintrag-lang qb steht DIR nicht zur Verfügung und kann nur über __DIR aufgerufen werden.

Siehe auch:
BefehlsreferenzeintragFILEEXISTS, BefehlsreferenzeintragOPEN, BefehlsreferenzeintragCURDIR, BefehlsreferenzeintragMKDIR, BefehlsreferenzeintragRMDIR, BefehlsreferenzeintragBetriebssystem-Anweisungen


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 21.07.2007 von MitgliedThePuppetMaster angelegt.
  • Die aktuellste Version wurde am 28.08.2018 von Redakteurnemored gespeichert.
  Versionen Versionen