Skip to content

Dateisystem

[Stabil: 2 - Stabil]

Stabil: 2 Stabilität: 2 - Stabil

Quellcode: lib/fs.js

Das Modul node:fs ermöglicht die Interaktion mit dem Dateisystem auf eine Art und Weise, die an Standard-POSIX-Funktionen angelehnt ist.

Zur Verwendung der Promise-basierten APIs:

js
import * as fs from 'node:fs/promises'
js
const fs = require('node:fs/promises')

Zur Verwendung der Callback- und synchronen APIs:

js
import * as fs from 'node:fs'
js
const fs = require('node:fs')

Alle Dateisystemoperationen haben synchrone, Callback- und Promise-basierte Formen und sind sowohl mit CommonJS-Syntax als auch mit ES6-Modulen (ESM) zugänglich.

Promise-Beispiel

Promise-basierte Operationen geben ein Promise zurück, das erfüllt wird, wenn die asynchrone Operation abgeschlossen ist.

js
import { unlink } from 'node:fs/promises'

try {
  await unlink('/tmp/hello')
  console.log('successfully deleted /tmp/hello')
} catch (error) {
  console.error('there was an error:', error.message)
}
js
const { unlink } = require('node:fs/promises')

;(async function (path) {
  try {
    await unlink(path)
    console.log(`successfully deleted ${path}`)
  } catch (error) {
    console.error('there was an error:', error.message)
  }
})('/tmp/hello')

Callback-Beispiel

Die Callback-Form nimmt eine Completion-Callback-Funktion als letztes Argument entgegen und ruft die Operation asynchron auf. Die an den Completion-Callback übergebenen Argumente hängen von der Methode ab, aber das erste Argument ist immer für eine Ausnahme reserviert. Wenn die Operation erfolgreich abgeschlossen wurde, ist das erste Argument null oder undefined.

js
import { unlink } from 'node:fs'

unlink('/tmp/hello', err => {
  if (err) throw err
  console.log('successfully deleted /tmp/hello')
})
js
const { unlink } = require('node:fs')

unlink('/tmp/hello', err => {
  if (err) throw err
  console.log('successfully deleted /tmp/hello')
})

Die callback-basierten Versionen der node:fs-Modul-APIs sind den Promise-APIs vorzuziehen, wenn maximale Leistung (sowohl in Bezug auf Ausführungszeit als auch Speicherzuweisung) erforderlich ist.

Synchrones Beispiel

Die synchronen APIs blockieren die Node.js-Ereignisschleife und die weitere JavaScript-Ausführung, bis der Vorgang abgeschlossen ist. Ausnahmen werden sofort ausgelöst und können mit try…catch behandelt oder weitergegeben werden.

js
import { unlinkSync } from 'node:fs'

try {
  unlinkSync('/tmp/hello')
  console.log('Datei /tmp/hello erfolgreich gelöscht')
} catch (err) {
  // Fehlerbehandlung
}
js
const { unlinkSync } = require('node:fs')

try {
  unlinkSync('/tmp/hello')
  console.log('Datei /tmp/hello erfolgreich gelöscht')
} catch (err) {
  // Fehlerbehandlung
}

Promises API

[Verlauf]

VersionÄnderungen
v14.0.0Verfügbar als require('fs/promises').
v11.14.0, v10.17.0Diese API ist nicht mehr experimentell.
v10.1.0Die API ist nur über require('fs').promises zugänglich.
v10.0.0Hinzugefügt in: v10.0.0

Die fs/promises API stellt asynchrone Dateisystemmethoden bereit, die Promises zurückgeben.

Die Promise-APIs verwenden den zugrundeliegenden Node.js-Threadpool, um Dateisystemoperationen außerhalb des Ereignisschleifen-Threads auszuführen. Diese Operationen sind nicht synchronisiert oder threadsicher. Vorsicht ist geboten, wenn mehrere gleichzeitige Änderungen an derselben Datei vorgenommen werden, da sonst Datenbeschädigung auftreten kann.

Klasse: FileHandle

Hinzugefügt in: v10.0.0

Ein <FileHandle>-Objekt ist ein Objekt-Wrapper für einen numerischen Dateideskriptor.

Instanzen des <FileHandle>-Objekts werden von der Methode fsPromises.open() erstellt.

Alle <FileHandle>-Objekte sind <EventEmitter>-Objekte.

Wenn ein <FileHandle> nicht mit der Methode filehandle.close() geschlossen wird, versucht es, den Dateideskriptor automatisch zu schließen und eine Prozesswarnung auszugeben, um Speicherlecks zu vermeiden. Verlassen Sie sich nicht auf dieses Verhalten, da es unzuverlässig sein kann und die Datei möglicherweise nicht geschlossen wird. Schließen Sie stattdessen immer explizit <FileHandle>-Objekte. Node.js kann dieses Verhalten in Zukunft ändern.

Ereignis: 'close'

Hinzugefügt in: v15.4.0

Das Ereignis 'close' wird ausgelöst, wenn die <FileHandle> geschlossen wurde und nicht mehr verwendet werden kann.

filehandle.appendFile(data[, options])

[Verlauf]

VersionÄnderungen
v21.1.0, v20.10.0Die Option flush wird jetzt unterstützt.
v15.14.0, v14.18.0Das Argument data unterstützt AsyncIterable, Iterable und Stream.
v14.0.0Der Parameter data konvertiert nicht unterstützte Eingaben nicht mehr in Strings.
v10.0.0Hinzugefügt in: v10.0.0

Alias von filehandle.writeFile().

Bei der Arbeit mit Dateihandles kann der Modus nicht von dem geändert werden, der mit fsPromises.open() festgelegt wurde. Daher ist dies äquivalent zu filehandle.writeFile().

filehandle.chmod(mode)

Hinzugefügt in: v10.0.0

  • mode <integer> die Datei-Modus-Bitmaske.
  • Rückgabewert: <Promise> Löst mit undefined bei Erfolg auf.

Ändert die Berechtigungen der Datei. Siehe chmod(2).

filehandle.chown(uid, gid)

Hinzugefügt in: v10.0.0

  • uid <integer> Die Benutzer-ID des neuen Besitzers der Datei.
  • gid <integer> Die Gruppen-ID der neuen Gruppe der Datei.
  • Rückgabewert: <Promise> Löst mit undefined bei Erfolg auf.

Ändert den Besitzer der Datei. Ein Wrapper für chown(2).

filehandle.close()

Hinzugefügt in: v10.0.0

  • Rückgabewert: <Promise> Löst mit undefined bei Erfolg auf.

Schließt den Dateihandle, nachdem auf den Abschluss aller ausstehenden Operationen auf dem Handle gewartet wurde.

js
import { open } from 'node:fs/promises'

let filehandle
try {
  filehandle = await open('thefile.txt', 'r')
} finally {
  await filehandle?.close()
}

filehandle.createReadStream([options])

Hinzugefügt in: v16.11.0

options kann start und end Werte enthalten, um einen Bereich von Bytes aus der Datei zu lesen, anstatt die gesamte Datei. Sowohl start als auch end sind inklusiv und beginnen bei 0, zulässige Werte liegen im Bereich [0, Number.MAX_SAFE_INTEGER]. Wenn start ausgelassen oder undefined ist, liest filehandle.createReadStream() sequentiell von der aktuellen Dateiposition. Die encoding kann eine beliebige der von <Buffer> akzeptierten sein.

Wenn der FileHandle auf ein Zeichengerät zeigt, das nur blockierende Lesevorgänge unterstützt (wie z. B. Tastatur oder Soundkarte), werden Lesevorgänge erst abgeschlossen, wenn Daten verfügbar sind. Dies kann verhindern, dass der Prozess beendet wird und der Stream sich auf natürliche Weise schließt.

Standardmäßig sendet der Stream ein 'close'-Ereignis, nachdem er zerstört wurde. Setzen Sie die Option emitClose auf false, um dieses Verhalten zu ändern.

js
import { open } from 'node:fs/promises'

const fd = await open('/dev/input/event0')
// Erstellt einen Stream von einem Zeichengerät.
const stream = fd.createReadStream()
setTimeout(() => {
  stream.close() // Dies schließt den Stream möglicherweise nicht.
  // Künstliches Markieren des Endes des Streams, als ob die zugrunde liegende Ressource
  // selbst das Ende der Datei angezeigt hätte, ermöglicht das Schließen des Streams.
  // Dies bricht ausstehende Lesevorgänge nicht ab, und wenn ein solcher Vorgang vorhanden ist,
  // kann der Prozess möglicherweise erst erfolgreich beendet werden, wenn er abgeschlossen ist.
  stream.push(null)
  stream.read(0)
}, 100)

Wenn autoClose falsch ist, wird der Dateideskriptor nicht geschlossen, selbst wenn ein Fehler auftritt. Es liegt in der Verantwortung der Anwendung, ihn zu schließen und sicherzustellen, dass kein Dateideskriptor-Leck auftritt. Wenn autoClose auf true gesetzt ist (Standardverhalten), wird der Dateideskriptor bei 'error' oder 'end' automatisch geschlossen.

Ein Beispiel zum Lesen der letzten 10 Bytes einer Datei mit einer Länge von 100 Bytes:

js
import { open } from 'node:fs/promises'

const fd = await open('sample.txt')
fd.createReadStream({ start: 90, end: 99 })

filehandle.createWriteStream([options])

[Verlauf]

VersionÄnderungen
v21.0.0, v20.10.0Die Option flush wird jetzt unterstützt.
v16.11.0Hinzugefügt in: v16.11.0

options kann auch eine start-Option enthalten, um das Schreiben von Daten an einer Position hinter dem Dateianfang zu ermöglichen. Zulässige Werte liegen im Bereich [0, Number.MAX_SAFE_INTEGER]. Das Ändern einer Datei anstelle des Ersetzens erfordert möglicherweise, dass die flags open-Option auf r+ anstatt auf den Standardwert r gesetzt wird. Die encoding kann eine beliebige der von <Buffer> akzeptierten sein.

Wenn autoClose auf true (Standardverhalten) gesetzt ist, wird der Datei-Descriptor bei 'error' oder 'finish' automatisch geschlossen. Wenn autoClose false ist, wird der Datei-Descriptor nicht geschlossen, selbst wenn ein Fehler auftritt. Es liegt in der Verantwortung der Anwendung, ihn zu schließen und sicherzustellen, dass kein Datei-Descriptor-Leck entsteht.

Standardmäßig sendet der Stream ein 'close'-Ereignis, nachdem er zerstört wurde. Setzen Sie die emitClose-Option auf false, um dieses Verhalten zu ändern.

filehandle.datasync()

Hinzugefügt in: v10.0.0

  • Rückgabewert: <Promise> Löst mit undefined bei Erfolg auf.

Zwingt alle aktuell gepufferten E/A-Operationen, die mit der Datei verknüpft sind, in den synchronisierten E/A-Abschlusszustand des Betriebssystems. Weitere Informationen finden Sie in der POSIX fdatasync(2) Dokumentation.

Im Gegensatz zu filehandle.sync löscht diese Methode keine geänderten Metadaten.

filehandle.fd

Hinzugefügt in: v10.0.0

filehandle.read(buffer, offset, length, position)

[Verlauf]

VersionÄnderungen
v21.0.0Akzeptiert BigInt-Werte als position.
v10.0.0Hinzugefügt in: v10.0.0
  • buffer <Buffer> | <TypedArray> | <DataView> Ein Puffer, der mit den gelesenen Dateidaten gefüllt wird.
  • offset <integer> Die Position im Puffer, an der mit dem Füllen begonnen werden soll. Standard: 0
  • length <integer> Die Anzahl der zu lesenden Bytes. Standard: buffer.byteLength - offset
  • position <integer> | <bigint> | <null> Die Position, an der mit dem Lesen von Daten aus der Datei begonnen werden soll. Wenn null oder -1, werden Daten ab der aktuellen Dateiposition gelesen, und die Position wird aktualisiert. Wenn position eine nicht-negative ganze Zahl ist, bleibt die aktuelle Dateiposition unverändert. Standard: null
  • Rückgabewert: <Promise> Löst bei Erfolg mit einem Objekt mit zwei Eigenschaften auf:

Liest Daten aus der Datei und speichert diese im angegebenen Puffer.

Wenn die Datei nicht gleichzeitig geändert wird, wird das Dateiende erreicht, wenn die Anzahl der gelesenen Bytes Null ist.

filehandle.read([options])

[Versionsgeschichte]

VersionÄnderungen
v21.0.0Akzeptiert BigInt-Werte als position.
v13.11.0, v12.17.0Hinzugefügt in: v13.11.0, v12.17.0
  • options <Object>

    • buffer <Buffer> | <TypedArray> | <DataView> Ein Puffer, der mit den gelesenen Datei-Daten gefüllt wird. Standard: Buffer.alloc(16384)
    • offset <integer> Die Position im Puffer, an der das Füllen beginnen soll. Standard: 0
    • length <integer> Die Anzahl der zu lesenden Bytes. Standard: buffer.byteLength - offset
    • position <integer> | <bigint> | <null> Die Position, an der mit dem Lesen von Daten aus der Datei begonnen werden soll. Wenn null oder -1, werden Daten ab der aktuellen Dateiposition gelesen und die Position wird aktualisiert. Wenn position eine nicht-negative ganze Zahl ist, bleibt die aktuelle Dateiposition unverändert. Standard: null
  • Rückgabewert: <Promise> Löst bei Erfolg mit einem Objekt mit zwei Eigenschaften auf:

Liest Daten aus der Datei und speichert diese im angegebenen Puffer.

Wenn die Datei nicht gleichzeitig geändert wird, wird das Dateiende erreicht, wenn die Anzahl der gelesenen Bytes Null ist.

filehandle.read(buffer[, options])

[Historie]

VersionÄnderungen
v21.0.0Akzeptiert BigInt-Werte als position.
v18.2.0, v16.17.0Hinzugefügt in: v18.2.0, v16.17.0
  • buffer <Buffer> | <TypedArray> | <DataView> Ein Puffer, der mit den gelesenen Dateidaten gefüllt wird.

  • options <Object>

    • offset <integer> Die Position im Puffer, an der mit dem Füllen begonnen werden soll. Standard: 0
    • length <integer> Die Anzahl der zu lesenden Bytes. Standard: buffer.byteLength - offset
    • position <integer> | <bigint> | <null> Die Position, an der mit dem Lesen von Daten aus der Datei begonnen werden soll. Wenn null oder -1, werden Daten ab der aktuellen Dateiposition gelesen, und die Position wird aktualisiert. Wenn position eine nicht-negative ganze Zahl ist, bleibt die aktuelle Dateiposition unverändert. Standard: null
  • Rückgabewert: <Promise> Erfolgreich abgeschlossen mit einem Objekt mit zwei Eigenschaften:

Liest Daten aus der Datei und speichert diese im angegebenen Puffer.

Wenn die Datei nicht gleichzeitig geändert wird, wird das Dateiende erreicht, wenn die Anzahl der gelesenen Bytes Null ist.

filehandle.readableWebStream([options])

[Historie]

VersionÄnderungen
v20.0.0, v18.17.0Option zum Erstellen eines 'bytes'-Streams hinzugefügt.
v17.0.0Hinzugefügt in: v17.0.0

[Stabil: 1 - Experimentell]

Stabil: 1 Stabilität: 1 - Experimentell

Gibt einen ReadableStream zurück, der zum Lesen der Dateidaten verwendet werden kann.

Ein Fehler wird ausgelöst, wenn diese Methode mehr als einmal aufgerufen wird oder nachdem der FileHandle geschlossen oder im Schließvorgang ist.

js
import { open } from 'node:fs/promises'

const file = await open('./some/file/to/read')

for await (const chunk of file.readableWebStream()) console.log(chunk)

await file.close()
js
const { open } = require('node:fs/promises')

;(async () => {
  const file = await open('./some/file/to/read')

  for await (const chunk of file.readableWebStream()) console.log(chunk)

  await file.close()
})()

Während der ReadableStream die Datei vollständig liest, schließt er den FileHandle nicht automatisch. Der Benutzercode muss dennoch die Methode fileHandle.close() aufrufen.

filehandle.readFile(options)

Hinzugefügt in: v10.0.0

  • options <Object> | <string>

  • Gibt zurück: <Promise> Löst sich nach einem erfolgreichen Lesevorgang mit dem Inhalt der Datei auf. Wenn keine Codierung angegeben ist (mit options.encoding), werden die Daten als <Buffer>-Objekt zurückgegeben. Andernfalls sind die Daten eine Zeichenkette.

Liest den gesamten Inhalt einer Datei asynchron.

Wenn options eine Zeichenkette ist, gibt diese die encoding an.

Das <FileHandle> muss das Lesen unterstützen.

Wenn ein oder mehrere filehandle.read()-Aufrufe an einem Filehandle durchgeführt werden und dann ein filehandle.readFile()-Aufruf erfolgt, werden die Daten ab der aktuellen Position bis zum Ende der Datei gelesen. Es wird nicht immer vom Anfang der Datei gelesen.

filehandle.readLines([options])

Hinzugefügt in: v18.11.0

Hilfsmethode zum Erstellen einer readline-Schnittstelle und zum Streamen über die Datei. Siehe filehandle.createReadStream() für die Optionen.

js
import { open } from 'node:fs/promises'

const file = await open('./some/file/to/read')

for await (const line of file.readLines()) {
  console.log(line)
}
js
const { open } = require('node:fs/promises')

;(async () => {
  const file = await open('./some/file/to/read')

  for await (const line of file.readLines()) {
    console.log(line)
  }
})()

filehandle.readv(buffers[, position])

Hinzugefügt in: v13.13.0, v12.17.0

Lesen Sie aus einer Datei und schreiben Sie in ein Array von <ArrayBufferView>s

filehandle.stat([options])

[Versionsgeschichte]

VersionÄnderungen
v10.5.0Akzeptiert ein zusätzliches options-Objekt, um anzugeben, ob die zurückgegebenen numerischen Werte bigint sein sollen.
v10.0.0Hinzugefügt in: v10.0.0

filehandle.sync()

Hinzugefügt in: v10.0.0

  • Rückgabewert: <Promise> Löst mit undefined bei Erfolg auf.

Fordert an, dass alle Daten für den geöffneten Datei-Descriptor auf das Speichergerät geschrieben werden. Die spezifische Implementierung ist betriebssystem- und gerätespezifisch. Weitere Details finden Sie in der POSIX fsync(2) Dokumentation.

filehandle.truncate(len)

Hinzugefügt in: v10.0.0

Kürzt die Datei.

Wenn die Datei größer als len Bytes war, bleiben nur die ersten len Bytes in der Datei erhalten.

Das folgende Beispiel behält nur die ersten vier Bytes der Datei:

js
import { open } from 'node:fs/promises'

let filehandle = null
try {
  filehandle = await open('temp.txt', 'r+')
  await filehandle.truncate(4)
} finally {
  await filehandle?.close()
}

Wenn die Datei vorher kürzer als len Bytes war, wird sie erweitert, und der erweiterte Teil wird mit Nullbytes ('\0') gefüllt:

Wenn len negativ ist, wird 0 verwendet.

filehandle.utimes(atime, mtime)

Hinzugefügt in: v10.0.0

Ändert die Zeitstempel des Dateisystems des vom <FileHandle> referenzierten Objekts und löst das Promise dann ohne Argumente bei Erfolg auf.

filehandle.write(buffer, offset[, length[, position]])

[Verlauf]

VersionÄnderungen
v14.0.0Der Parameter buffer konvertiert nicht mehr nicht unterstützte Eingaben in Puffer.
v10.0.0Hinzugefügt in: v10.0.0
  • buffer <Buffer> | <TypedArray> | <DataView>
  • offset <integer> Die Startposition innerhalb von buffer, an der die zu schreibenden Daten beginnen.
  • length <integer> Die Anzahl der Bytes aus buffer, die geschrieben werden sollen. Standard: buffer.byteLength - offset
  • position <integer> | <null> Der Offset vom Dateianfang, an dem die Daten aus buffer geschrieben werden sollen. Wenn position keine Zahl ist, werden die Daten an der aktuellen Position geschrieben. Weitere Informationen finden Sie in der POSIX pwrite(2) Dokumentation. Standard: null
  • Gibt zurück: <Promise>

Schreibt buffer in die Datei.

Das Promise wird mit einem Objekt erfüllt, das zwei Eigenschaften enthält:

Es ist unsicher, filehandle.write() mehrmals auf dieselbe Datei zu verwenden, ohne auf die Erfüllung (oder Ablehnung) des Promises zu warten. Verwenden Sie in diesem Szenario filehandle.createWriteStream().

Unter Linux funktionieren positionale Schreibvorgänge nicht, wenn die Datei im Anhangsmodus geöffnet wird. Der Kernel ignoriert das Positionsargument und hängt die Daten immer an das Ende der Datei an.

filehandle.write(buffer[, options])

Hinzugefügt in: v18.3.0, v16.17.0

Schreibt buffer in die Datei.

Ähnlich der obigen Funktion filehandle.write nimmt diese Version ein optionales options-Objekt entgegen. Wird kein options-Objekt angegeben, werden die oben genannten Werte als Standard verwendet.

filehandle.write(string[, position[, encoding]])

[Verlauf]

VersionÄnderungen
v14.0.0Der Parameter string konvertiert nicht mehr nicht unterstützte Eingaben in Strings.
v10.0.0Hinzugefügt in: v10.0.0
  • string <string>
  • position <integer> | <null> Der Offset vom Dateianfang, an dem die Daten aus string geschrieben werden sollen. Wenn position keine number ist, werden die Daten an der aktuellen Position geschrieben. Siehe die POSIX pwrite(2) Dokumentation für weitere Details. Standardwert: null
  • encoding <string> Die erwartete String-Codierung. Standardwert: 'utf8'
  • Rückgabewert: <Promise>

Schreibt string in die Datei. Wenn string kein String ist, wird das Promise mit einem Fehler abgelehnt.

Das Promise wird mit einem Objekt erfüllt, das zwei Eigenschaften enthält:

  • bytesWritten <integer> die Anzahl der geschriebenen Bytes
  • buffer <string> eine Referenz auf den geschriebenen string.

Es ist unsicher, filehandle.write() mehrmals auf dieselbe Datei anzuwenden, ohne auf die Erfüllung (oder Ablehnung) des Promises zu warten. Verwenden Sie in diesem Szenario filehandle.createWriteStream().

Unter Linux funktionieren positionale Schreibvorgänge nicht, wenn die Datei im Anhangsmodus geöffnet wird. Der Kernel ignoriert das Positionsargument und hängt die Daten immer an das Ende der Datei an.

filehandle.writeFile(data, options)

[Verlauf]

VersionÄnderungen
v15.14.0, v14.18.0Das Argument data unterstützt AsyncIterable, Iterable und Stream.
v14.0.0Der Parameter data konvertiert nicht mehr ungültige Eingaben in Strings.
v10.0.0Hinzugefügt in: v10.0.0

Schreibt asynchron Daten in eine Datei und ersetzt die Datei, falls sie bereits existiert. data kann eine Zeichenkette, ein Buffer, ein <AsyncIterable> oder ein <Iterable> Objekt sein. Das Promise wird bei Erfolg ohne Argumente erfüllt.

Wenn options eine Zeichenkette ist, gibt diese die encoding an.

Das <FileHandle> muss das Schreiben unterstützen.

Es ist unsicher, filehandle.writeFile() mehrmals für dieselbe Datei zu verwenden, ohne auf die Erfüllung (oder Ablehnung) des Promises zu warten.

Wenn ein oder mehrere filehandle.write()-Aufrufe für einen File Handle durchgeführt werden und anschließend ein filehandle.writeFile()-Aufruf erfolgt, werden die Daten von der aktuellen Position bis zum Ende der Datei geschrieben. Es wird nicht immer vom Anfang der Datei aus geschrieben.

filehandle.writev(buffers[, position])

Hinzugefügt in: v12.9.0

Schreibt ein Array von <ArrayBufferView>s in die Datei.

Das Promise wird mit einem Objekt erfüllt, das zwei Eigenschaften enthält:

Es ist unsicher, writev() mehrfach auf dieselbe Datei aufzurufen, ohne auf die Erfüllung (oder Ablehnung) des Promises zu warten.

Unter Linux funktionieren positionale Schreibvorgänge nicht, wenn die Datei im Anhängemodus geöffnet wird. Der Kernel ignoriert das Positionsargument und hängt die Daten immer an das Ende der Datei an.

filehandle[Symbol.asyncDispose]()

Hinzugefügt in: v20.4.0, v18.18.0

[Stabil: 1 - Experimentell]

Stabil: 1 Stabilität: 1 - Experimentell

Ein Alias für filehandle.close().

fsPromises.access(path[, mode])

Hinzugefügt in: v10.0.0

Prüft die Berechtigungen eines Benutzers für die durch path angegebene Datei oder das Verzeichnis. Das Argument mode ist eine optionale Ganzzahl, die die durchzuführenden Zugriffsprüfungen angibt. mode sollte entweder der Wert fs.constants.F_OK oder eine Maske sein, die aus dem bitweisen ODER von fs.constants.R_OK, fs.constants.W_OK und fs.constants.X_OK besteht (z. B. fs.constants.W_OK | fs.constants.R_OK). Überprüfen Sie Dateizugriffskonstanten für mögliche Werte von mode.

Wenn die Zugriffsprüfung erfolgreich ist, wird das Promise ohne Wert erfüllt. Wenn eine der Zugriffsprüfungen fehlschlägt, wird das Promise mit einem <Error>-Objekt abgelehnt. Das folgende Beispiel prüft, ob die Datei /etc/passwd vom aktuellen Prozess gelesen und geschrieben werden kann.

js
import { access, constants } from 'node:fs/promises'

try {
  await access('/etc/passwd', constants.R_OK | constants.W_OK)
  console.log('can access')
} catch {
  console.error('cannot access')
}

Die Verwendung von fsPromises.access() zum Überprüfen der Zugänglichkeit einer Datei, bevor fsPromises.open() aufgerufen wird, wird nicht empfohlen. Dies führt zu einem Race Condition, da andere Prozesse den Zustand der Datei zwischen den beiden Aufrufen ändern können. Stattdessen sollte der Benutzercode die Datei direkt öffnen/lesen/schreiben und den Fehler behandeln, der ausgelöst wird, wenn die Datei nicht zugänglich ist.

fsPromises.appendFile(path, data[, options])

[Verlauf]

VersionÄnderungen
v21.1.0, v20.10.0Die Option flush wird jetzt unterstützt.
v10.0.0Hinzugefügt in: v10.0.0

Fügt asynchron Daten an eine Datei an und erstellt die Datei, falls sie noch nicht existiert. data kann eine Zeichenkette oder ein <Buffer> sein.

Wenn options eine Zeichenkette ist, gibt diese die encoding an.

Die Option mode betrifft nur die neu erstellte Datei. Siehe fs.open() für weitere Details.

Der path kann als <FileHandle> angegeben werden, der zum Anhängen geöffnet wurde (mit fsPromises.open()).

fsPromises.chmod(path, mode)

Hinzugefügt in: v10.0.0

Ändert die Berechtigungen einer Datei.

fsPromises.chown(path, uid, gid)

Hinzugefügt in: v10.0.0

Ändert den Eigentümer einer Datei.

fsPromises.copyFile(src, dest[, mode])

[Verlauf]

VersionÄnderungen
v14.0.0Das Argument flags wurde in mode geändert und eine strengere Typvalidierung eingeführt.
v10.0.0Hinzugefügt in: v10.0.0
  • src <string> | <Buffer> | <URL> Quelldateiname zum Kopieren

  • dest <string> | <Buffer> | <URL> Zieldateiname des Kopiervorgangs

  • mode <integer> Optionale Modifikatoren, die das Verhalten des Kopiervorgangs festlegen. Es ist möglich, eine Maske zu erstellen, die aus dem bitweisen ODER von zwei oder mehr Werten besteht (z. B. fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE). Standardwert: 0.

    • fs.constants.COPYFILE_EXCL: Der Kopiervorgang schlägt fehl, wenn dest bereits existiert.
    • fs.constants.COPYFILE_FICLONE: Der Kopiervorgang versucht, einen schreibgeschützten Reflink zu erstellen. Wenn die Plattform Copy-on-Write nicht unterstützt, wird ein Ausweichkopiermechanismus verwendet.
    • fs.constants.COPYFILE_FICLONE_FORCE: Der Kopiervorgang versucht, einen schreibgeschützten Reflink zu erstellen. Wenn die Plattform Copy-on-Write nicht unterstützt, schlägt der Vorgang fehl.
  • Rückgabewert: <Promise> Löst mit undefined bei Erfolg auf.

Kopiert src asynchron nach dest. Standardmäßig wird dest überschrieben, wenn es bereits existiert.

Es werden keine Garantien für die Atomarität des Kopiervorgangs gegeben. Wenn nach dem Öffnen der Zieldatei zum Schreiben ein Fehler auftritt, wird versucht, die Zieldatei zu entfernen.

js
import { copyFile, constants } from 'node:fs/promises'

try {
  await copyFile('source.txt', 'destination.txt')
  console.log('source.txt wurde nach destination.txt kopiert')
} catch {
  console.error('Die Datei konnte nicht kopiert werden')
}

// Durch die Verwendung von COPYFILE_EXCL schlägt der Vorgang fehl, wenn destination.txt existiert.
try {
  await copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL)
  console.log('source.txt wurde nach destination.txt kopiert')
} catch {
  console.error('Die Datei konnte nicht kopiert werden')
}

fsPromises.cp(src, dest[, options])

[Versionsgeschichte]

VersionÄnderungen
v22.3.0Diese API ist nicht mehr experimentell.
v20.1.0, v18.17.0Akzeptiert eine zusätzliche mode-Option, um das Kopierverhalten als mode-Argument von fs.copyFile() anzugeben.
v17.6.0, v16.15.0Akzeptiert eine zusätzliche verbatimSymlinks-Option, um anzugeben, ob die Pfadauflösung für symbolische Links durchgeführt werden soll.
v16.7.0Hinzugefügt in: v16.7.0
  • src <string> | <URL> Quelldateipfad zum Kopieren.

  • dest <string> | <URL> Zielpfad zum Kopieren.

  • options <Object>

    • dereference <boolean> Symbolische Links auflösen. Standard: false.

    • errorOnExist <boolean> Wenn force false ist und das Ziel existiert, einen Fehler auslösen. Standard: false.

    • filter <Function> Funktion zum Filtern kopierter Dateien/Verzeichnisse. Liefert true zurück, um das Element zu kopieren, false, um es zu ignorieren. Wenn ein Verzeichnis ignoriert wird, wird auch der gesamte Inhalt übersprungen. Kann auch ein Promise zurückgeben, das mit true oder false aufgelöst wird. Standard: undefined.

    • src <string> Quelldateipfad zum Kopieren.

    • dest <string> Zielpfad zum Kopieren.

    • Gibt zurück: <boolean> | <Promise> Ein Wert, der in einen booleschen Wert umgewandelt werden kann, oder ein Promise, das einen solchen Wert erfüllt.

    • force <boolean> Bestehende Datei oder Verzeichnis überschreiben. Der Kopiervorgang ignoriert Fehler, wenn Sie dies auf false setzen und das Ziel existiert. Verwenden Sie die Option errorOnExist, um dieses Verhalten zu ändern. Standard: true.

    • mode <integer> Modifikatoren für den Kopiervorgang. Standard: 0. Siehe mode-Flag von fsPromises.copyFile().

    • preserveTimestamps <boolean> Wenn true, werden Zeitstempel von src beibehalten. Standard: false.

    • recursive <boolean> Verzeichnisse rekursiv kopieren. Standard: false

    • verbatimSymlinks <boolean> Wenn true, wird die Pfadauflösung für symbolische Links übersprungen. Standard: false

  • Gibt zurück: <Promise> Löst mit undefined bei Erfolg auf.

Kopiert asynchron die gesamte Verzeichnisstruktur von src nach dest, einschließlich Unterverzeichnissen und Dateien.

Beim Kopieren eines Verzeichnisses in ein anderes Verzeichnis werden keine Globs unterstützt, und das Verhalten ähnelt cp dir1/ dir2/.

fsPromises.glob(pattern[, options])

[Historie]

VersionÄnderungen
v22.2.0Unterstützung für withFileTypes als Option hinzugefügt.
v22.0.0Hinzugefügt in: v22.0.0

[Stabil: 1 - Experimentell]

Stabil: 1 Stabilität: 1 - Experimentell

  • pattern <string> | <string[]>

  • options <Object>

    • cwd <string> aktuelles Arbeitsverzeichnis. Standardwert: process.cwd()
    • exclude <Function> Funktion zum Filtern von Dateien/Verzeichnissen. Gibt true zurück, um das Element auszuschließen, false, um es einzuschließen. Standardwert: undefined.
    • withFileTypes <boolean> true, wenn der Glob Pfade als Dirents zurückgeben soll, andernfalls false. Standardwert: false.
  • Rückgabewert: <AsyncIterator> Ein AsyncIterator, der die Pfade der Dateien liefert, die dem Muster entsprechen.

js
import { glob } from 'node:fs/promises'

for await (const entry of glob('**/*.js')) console.log(entry)
js
const { glob } = require('node:fs/promises')

;(async () => {
  for await (const entry of glob('**/*.js')) console.log(entry)
})()

fsPromises.lchmod(path, mode)

Seit v10.0.0 veraltet

Ändert die Berechtigungen eines symbolischen Links.

Diese Methode ist nur unter macOS implementiert.

fsPromises.lchown(path, uid, gid)

[Verlauf]

VersionÄnderungen
v10.6.0Diese API ist nicht mehr veraltet.
v10.0.0Hinzugefügt in: v10.0.0

Ändert den Besitz eines symbolischen Links.

fsPromises.lutimes(path, atime, mtime)

Hinzugefügt in: v14.5.0, v12.19.0

Ändert die Zugriffs- und Änderungszeiten einer Datei auf die gleiche Weise wie fsPromises.utimes(), mit dem Unterschied, dass, wenn der Pfad auf einen symbolischen Link verweist, der Link nicht dereferenziert wird: Stattdessen werden die Zeitstempel des symbolischen Links selbst geändert.

fsPromises.link(existingPath, newPath)

Hinzugefügt in: v10.0.0

Erstellt einen neuen Link von existingPath nach newPath. Siehe die POSIX link(2) Dokumentation für weitere Details.

fsPromises.lstat(path[, options])

[Verlauf]

VersionÄnderungen
v10.5.0Akzeptiert ein zusätzliches options-Objekt, um anzugeben, ob die zurückgegebenen numerischen Werte BigInts sein sollen.
v10.0.0Hinzugefügt in: v10.0.0

Äquivalent zu fsPromises.stat(), es sei denn, path verweist auf einen symbolischen Link, in diesem Fall wird der Link selbst geprüft, nicht die Datei, auf die er verweist. Siehe die POSIX lstat(2) Dokumentation für weitere Details.

fsPromises.mkdir(path[, options])

Hinzugefügt in: v10.0.0

Erstellt asynchron ein Verzeichnis.

Das optionale Argument options kann eine ganze Zahl sein, die mode (Berechtigungen und Sticky Bits) angibt, oder ein Objekt mit einer mode-Eigenschaft und einer recursive-Eigenschaft, die angibt, ob übergeordnete Verzeichnisse erstellt werden sollen. Ein Aufruf von fsPromises.mkdir(), wenn path ein bereits existierendes Verzeichnis ist, führt nur dann zu einer Ablehnung, wenn recursive false ist.

js
import { mkdir } from 'node:fs/promises'

try {
  const projectFolder = new URL('./test/project/', import.meta.url)
  const createDir = await mkdir(projectFolder, { recursive: true })

  console.log(`created ${createDir}`)
} catch (err) {
  console.error(err.message)
}
js
const { mkdir } = require('node:fs/promises')
const { join } = require('node:path')

async function makeDirectory() {
  const projectFolder = join(__dirname, 'test', 'project')
  const dirCreation = await mkdir(projectFolder, { recursive: true })

  console.log(dirCreation)
  return dirCreation
}

makeDirectory().catch(console.error)

fsPromises.mkdtemp(prefix[, options])

[Verlauf]

VersionÄnderungen
v20.6.0, v18.19.0Der Parameter prefix akzeptiert jetzt Puffer und URLs.
v16.5.0, v14.18.0Der Parameter prefix akzeptiert jetzt eine leere Zeichenkette.
v10.0.0Hinzugefügt in: v10.0.0

Erstellt ein eindeutiges temporäres Verzeichnis. Ein eindeutiger Verzeichnisname wird generiert, indem sechs zufällige Zeichen an das Ende des angegebenen prefix angehängt werden. Vermeiden Sie aufgrund von Plattforminkonsistenzen nachgestellte X-Zeichen in prefix. Einige Plattformen, insbesondere die BSDs, können mehr als sechs zufällige Zeichen zurückgeben und nachgestellte X-Zeichen in prefix durch zufällige Zeichen ersetzen.

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer Eigenschaft encoding, die die zu verwendende Zeichencodierung angibt.

js
import { mkdtemp } from 'node:fs/promises'
import { join } from 'node:path'
import { tmpdir } from 'node:os'

try {
  await mkdtemp(join(tmpdir(), 'foo-'))
} catch (err) {
  console.error(err)
}

Die Methode fsPromises.mkdtemp() hängt die sechs zufällig ausgewählten Zeichen direkt an die prefix-Zeichenkette an. Wenn beispielsweise ein Verzeichnis /tmp vorhanden ist und die Absicht besteht, ein temporäres Verzeichnis innerhalb von /tmp zu erstellen, muss prefix mit einem plattformspezifischen Pfadtrennzeichen enden (require('node:path').sep).

fsPromises.open(path, flags[, mode])

[Verlauf]

VersionÄnderungen
v11.1.0Das Argument flags ist jetzt optional und standardmäßig auf 'r' gesetzt.
v10.0.0Hinzugefügt in: v10.0.0

Öffnet ein <FileHandle>.

Weitere Details finden Sie in der POSIX open(2)-Dokumentation.

Einige Zeichen (\< \> : " / \ | ? *) sind unter Windows reserviert, wie in Benennen von Dateien, Pfaden und Namespaces dokumentiert. Unter NTFS öffnet Node.js einen Dateisystemstrom, wenn der Dateiname einen Doppelpunkt enthält, wie auf dieser MSDN-Seite beschrieben.

fsPromises.opendir(path[, options])

[Verlauf]

VersionÄnderungen
v20.1.0, v18.17.0Option recursive hinzugefügt.
v13.1.0, v12.16.0Die Option bufferSize wurde eingeführt.
v12.12.0Hinzugefügt in: v12.12.0
  • path <string> | <Buffer> | <URL>

  • options <Object>

    • encoding <string> | <null> Standardwert: 'utf8'
    • bufferSize <number> Anzahl der Verzeichniseinträge, die intern beim Lesen aus dem Verzeichnis gepuffert werden. Höhere Werte führen zu besserer Leistung, aber höherem Speicherverbrauch. Standardwert: 32
    • recursive <boolean> Das aufgelöste Dir wird ein <AsyncIterable> sein, das alle Unterdateien und -verzeichnisse enthält. Standardwert: false
  • Rückgabewert: <Promise> Erfüllt mit einem <fs.Dir>.

Öffnet asynchron ein Verzeichnis für die iterative Suche. Weitere Details finden Sie in der POSIX opendir(3)-Dokumentation.

Erstellt ein <fs.Dir>, das alle weiteren Funktionen zum Lesen aus und Bereinigen des Verzeichnisses enthält.

Die Option encoding legt die Codierung für den path beim Öffnen des Verzeichnisses und nachfolgenden Lesevorgängen fest.

Beispiel mit asynchroner Iteration:

js
import { opendir } from 'node:fs/promises'

try {
  const dir = await opendir('./')
  for await (const dirent of dir) console.log(dirent.name)
} catch (err) {
  console.error(err)
}

Bei Verwendung des asynchronen Iterators wird das <fs.Dir>-Objekt automatisch geschlossen, nachdem der Iterator beendet wurde.

fsPromises.readdir(path[, options])

[Verlauf]

VersionÄnderungen
v20.1.0, v18.17.0Option recursive hinzugefügt.
v10.11.0Neue Option withFileTypes hinzugefügt.
v10.0.0Hinzugefügt in: v10.0.0
  • path <string> | <Buffer> | <URL>

  • options <string> | <Object>

    • encoding <string> Standard: 'utf8'
    • withFileTypes <boolean> Standard: false
    • recursive <boolean> Wenn true, liest den Inhalt eines Verzeichnisses rekursiv. Im rekursiven Modus werden alle Dateien, Unterdateien und Verzeichnisse aufgelistet. Standard: false.
  • Rückgabewert: <Promise> Erfüllt mit einem Array der Namen der Dateien im Verzeichnis, ausgenommen '.' und '..'.

Liest den Inhalt eines Verzeichnisses.

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer encoding-Eigenschaft, die die zu verwendende Zeichencodierung für die Dateinamen angibt. Wenn encoding auf 'buffer' gesetzt ist, werden die zurückgegebenen Dateinamen als <Buffer>-Objekte übergeben.

Wenn options.withFileTypes auf true gesetzt ist, enthält das zurückgegebene Array <fs.Dirent>-Objekte.

js
import { readdir } from 'node:fs/promises'

try {
  const files = await readdir(path)
  for (const file of files) console.log(file)
} catch (err) {
  console.error(err)
}

fsPromises.readFile(path[, options])

[Historie]

VersionÄnderungen
v15.2.0, v14.17.0Das options-Argument kann ein AbortSignal enthalten, um eine laufende readFile-Anfrage abzubrechen.
v10.0.0Hinzugefügt in: v10.0.0

Liest asynchron den gesamten Inhalt einer Datei.

Wenn keine Codierung angegeben ist (mit options.encoding), werden die Daten als <Buffer>-Objekt zurückgegeben. Andernfalls sind die Daten eine Zeichenkette.

Wenn options eine Zeichenkette ist, gibt diese die Codierung an.

Wenn path ein Verzeichnis ist, ist das Verhalten von fsPromises.readFile() plattformabhängig. Unter macOS, Linux und Windows wird das Promise mit einem Fehler abgelehnt. Unter FreeBSD wird eine Darstellung des Inhalts des Verzeichnisses zurückgegeben.

Ein Beispiel zum Lesen einer package.json-Datei im selben Verzeichnis wie der laufende Code:

js
import { readFile } from 'node:fs/promises'
try {
  const filePath = new URL('./package.json', import.meta.url)
  const contents = await readFile(filePath, { encoding: 'utf8' })
  console.log(contents)
} catch (err) {
  console.error(err.message)
}
js
const { readFile } = require('node:fs/promises')
const { resolve } = require('node:path')
async function logFile() {
  try {
    const filePath = resolve('./package.json')
    const contents = await readFile(filePath, { encoding: 'utf8' })
    console.log(contents)
  } catch (err) {
    console.error(err.message)
  }
}
logFile()

Es ist möglich, eine laufende readFile-Operation mit einem <AbortSignal> abzubrechen. Wenn eine Anfrage abgebrochen wird, wird das zurückgegebene Promise mit einem AbortError abgelehnt:

js
import { readFile } from 'node:fs/promises'

try {
  const controller = new AbortController()
  const { signal } = controller
  const promise = readFile(fileName, { signal })

  // Brechen Sie die Anfrage ab, bevor das Promise erfüllt wird.
  controller.abort()

  await promise
} catch (err) {
  // Wenn eine Anfrage abgebrochen wird - err ist ein AbortError
  console.error(err)
}

Das Abbrechen einer laufenden Anfrage bricht keine einzelnen Betriebssystemanforderungen ab, sondern eher die interne Pufferung, die fs.readFile durchführt.

Jeder angegebene <FileHandle> muss das Lesen unterstützen.

fsPromises.readlink(path[, options])

Hinzugefügt in: v10.0.0

Liest den Inhalt des symbolischen Links, auf den path verweist. Weitere Details finden Sie in der POSIX readlink(2) Dokumentation. Das Promise wird mit linkString bei Erfolg aufgelöst.

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer encoding-Eigenschaft, die die zu verwendende Zeichencodierung für den zurückgegebenen Linkpfad angibt. Wenn encoding auf 'buffer' gesetzt ist, wird der zurückgegebene Linkpfad als <Buffer> Objekt übergeben.

fsPromises.realpath(path[, options])

Hinzugefügt in: v10.0.0

Bestimmt den tatsächlichen Speicherort von path unter Verwendung der gleichen Semantik wie die Funktion fs.realpath.native().

Nur Pfade, die in UTF8-Zeichenketten konvertiert werden können, werden unterstützt.

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer encoding-Eigenschaft, die die zu verwendende Zeichencodierung für den Pfad angibt. Wenn encoding auf 'buffer' gesetzt ist, wird der zurückgegebene Pfad als <Buffer> Objekt übergeben.

Unter Linux muss, wenn Node.js mit musl libc verknüpft ist, das procfs-Dateisystem auf /proc gemountet sein, damit diese Funktion funktioniert. Glibc hat diese Einschränkung nicht.

fsPromises.rename(oldPath, newPath)

Hinzugefügt in: v10.0.0

Benennt oldPath in newPath um.

fsPromises.rmdir(path[, options])

[Verlauf]

VersionÄnderungen
v16.0.0Die Verwendung von fsPromises.rmdir(path, { recursive: true }) für einen Pfad, der eine Datei ist, ist nicht mehr zulässig und führt unter Windows zu einem ENOENT-Fehler und unter POSIX zu einem ENOTDIR-Fehler.
v16.0.0Die Verwendung von fsPromises.rmdir(path, { recursive: true }) für einen Pfad, der nicht existiert, ist nicht mehr zulässig und führt zu einem ENOENT-Fehler.
v16.0.0Die Option recursive ist veraltet, ihre Verwendung löst eine Veraltungswarnung aus.
v14.14.0Die Option recursive ist veraltet, verwenden Sie stattdessen fsPromises.rm.
v13.3.0, v12.16.0Die Option maxBusyTries wurde in maxRetries umbenannt, und ihr Standardwert ist 0. Die Option emfileWait wurde entfernt, und EMFILE-Fehler verwenden dieselbe Wiederholungslogik wie andere Fehler. Die Option retryDelay wird jetzt unterstützt. ENFILE-Fehler werden jetzt wiederholt.
v12.10.0Die Optionen recursive, maxBusyTries und emfileWait werden jetzt unterstützt.
v10.0.0Hinzugefügt in: v10.0.0
  • path <string> | <Buffer> | <URL>

  • options <Object>

    • maxRetries <integer> Wenn ein EBUSY, EMFILE, ENFILE, ENOTEMPTY oder EPERM Fehler auftritt, wiederholt Node.js den Vorgang mit einer linearen Backoff-Wartezeit von retryDelay Millisekunden länger bei jedem Versuch. Diese Option gibt die Anzahl der Wiederholungsversuche an. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 0.
    • recursive <boolean> Wenn true, wird ein rekursiver Verzeichnisentfernung durchgeführt. Im rekursiven Modus werden Operationen bei Fehlern wiederholt. Standard: false. Veraltet.
    • retryDelay <integer> Die Wartezeit in Millisekunden zwischen Wiederholungsversuchen. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 100.
  • Rückgabewert: <Promise> Wird mit undefined bei Erfolg erfüllt.

Entfernt das durch path identifizierte Verzeichnis.

Die Verwendung von fsPromises.rmdir() auf einer Datei (kein Verzeichnis) führt dazu, dass das Promise mit einem ENOENT-Fehler unter Windows und einem ENOTDIR-Fehler unter POSIX abgelehnt wird.

Um ein ähnliches Verhalten wie der Unix-Befehl rm -rf zu erhalten, verwenden Sie fsPromises.rm() mit den Optionen { recursive: true, force: true }.

fsPromises.rm(path[, options])

Hinzugefügt in: v14.14.0

  • path <string> | <Buffer> | <URL>

  • options <Object>

    • force <boolean> Wenn true, werden Ausnahmen ignoriert, wenn path nicht existiert. Standard: false.
    • maxRetries <integer> Wenn ein EBUSY, EMFILE, ENFILE, ENOTEMPTY oder EPERM Fehler auftritt, wiederholt Node.js den Vorgang mit einer linearen Backoff-Wartezeit von retryDelay Millisekunden länger bei jedem Versuch. Diese Option gibt die Anzahl der Wiederholungsversuche an. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 0.
    • recursive <boolean> Wenn true, wird eine rekursive Verzeichnislöschung durchgeführt. Im rekursiven Modus werden Operationen bei Fehlern wiederholt. Standard: false.
    • retryDelay <integer> Die Wartezeit in Millisekunden zwischen Wiederholungsversuchen. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 100.
  • Rückgabewert: <Promise> Löst mit undefined bei Erfolg auf.

Entfernt Dateien und Verzeichnisse (modelliert nach dem Standard-POSIX rm Dienstprogramm).

fsPromises.stat(path[, options])

[Verlauf]

VersionÄnderungen
v10.5.0Akzeptiert ein zusätzliches options Objekt, um anzugeben, ob die zurückgegebenen numerischen Werte BigInts sein sollen.
v10.0.0Hinzugefügt in: v10.0.0

fsPromises.statfs(path[, options])

Hinzugefügt in: v19.6.0, v18.15.0

fsPromises.symlink(target, path[, type])

[Verlauf]

VersionÄnderungen
v19.0.0Wenn das type-Argument null ist oder weggelassen wird, erkennt Node.js den target-Typ automatisch und wählt automatisch dir oder file aus.
v10.0.0Hinzugefügt in: v10.0.0

Erstellt einen symbolischen Link.

Das type-Argument wird nur auf Windows-Plattformen verwendet und kann einer von 'dir', 'file' oder 'junction' sein. Wenn das type-Argument null ist, erkennt Node.js den target-Typ automatisch und verwendet 'file' oder 'dir'. Wenn target nicht existiert, wird 'file' verwendet. Windows-Verknüpfungspunkte erfordern, dass der Zielpfad absolut ist. Bei Verwendung von 'junction' wird das target-Argument automatisch auf den absoluten Pfad normalisiert. Verknüpfungspunkte auf NTFS-Volumes können nur auf Verzeichnisse verweisen.

fsPromises.truncate(path[, len])

Hinzugefügt in: v10.0.0

Kürzt (verkürzt oder erweitert die Länge) des Inhalts unter path auf len Bytes.

fsPromises.unlink(path)

Hinzugefügt in: v10.0.0

Wenn path auf einen symbolischen Link verweist, wird der Link entfernt, ohne die Datei oder das Verzeichnis zu beeinflussen, auf die dieser Link verweist. Wenn path auf einen Dateipfad verweist, der kein symbolischer Link ist, wird die Datei gelöscht. Siehe die POSIX unlink(2) Dokumentation für weitere Details.

fsPromises.utimes(path, atime, mtime)

Hinzugefügt in: v10.0.0

Ändert die Dateisystem-Zeitstempel des Objekts, auf das path verweist.

Die Argumente atime und mtime folgen diesen Regeln:

  • Werte können entweder Zahlen sein, die die Unix-Epoch-Zeit darstellen, Date-Objekte oder numerische Zeichenketten wie '123456789.0'.
  • Wenn der Wert nicht in eine Zahl konvertiert werden kann oder NaN, Infinity oder -Infinity ist, wird ein Error geworfen.

fsPromises.watch(filename[, options])

Hinzugefügt in: v15.9.0, v14.18.0

  • filename <string> | <Buffer> | <URL>

  • options <string> | <Object>

    • persistent <boolean> Gibt an, ob der Prozess so lange weiterlaufen soll, wie Dateien überwacht werden. Standardwert: true.
    • recursive <boolean> Gibt an, ob alle Unterverzeichnisse überwacht werden sollen oder nur das aktuelle Verzeichnis. Dies gilt, wenn ein Verzeichnis angegeben ist und nur auf unterstützten Plattformen (siehe Einschränkungen). Standardwert: false.
    • encoding <string> Gibt die Zeichencodierung an, die für den an den Listener übergebenen Dateinamen verwendet werden soll. Standardwert: 'utf8'.
    • signal <AbortSignal> Ein <AbortSignal>, der signalisiert, wann der Watcher gestoppt werden soll.
  • Gibt zurück: <AsyncIterator> von Objekten mit den Eigenschaften:

Gibt einen asynchronen Iterator zurück, der Änderungen an filename überwacht, wobei filename entweder eine Datei oder ein Verzeichnis ist.

js
const { watch } = require('node:fs/promises')

const ac = new AbortController()
const { signal } = ac
setTimeout(() => ac.abort(), 10000)

;(async () => {
  try {
    const watcher = watch(__filename, { signal })
    for await (const event of watcher) console.log(event)
  } catch (err) {
    if (err.name === 'AbortError') return
    throw err
  }
})()

Auf den meisten Plattformen wird 'rename' immer dann ausgegeben, wenn ein Dateiname im Verzeichnis erscheint oder verschwindet.

Alle Einschränkungen für fs.watch() gelten auch für fsPromises.watch().

fsPromises.writeFile(file, data[, options])

[Verlauf]

VersionÄnderungen
v21.0.0, v20.10.0Die Option flush wird jetzt unterstützt.
v15.14.0, v14.18.0Das Argument data unterstützt AsyncIterable, Iterable und Stream.
v15.2.0, v14.17.0Das options-Argument kann ein AbortSignal enthalten, um eine laufende writeFile-Anfrage abzubrechen.
v14.0.0Der data-Parameter konvertiert nicht mehr ungültige Eingaben in Strings.
v10.0.0Hinzugefügt in: v10.0.0

Schreibt asynchron Daten in eine Datei und ersetzt die Datei, falls sie bereits existiert. data kann eine Zeichenkette, ein Buffer, ein <AsyncIterable> oder ein <Iterable>-Objekt sein.

Die Option encoding wird ignoriert, wenn data ein Buffer ist.

Wenn options eine Zeichenkette ist, gibt sie die Codierung an.

Die Option mode betrifft nur die neu erstellte Datei. Weitere Einzelheiten finden Sie unter fs.open().

Jeder angegebene <FileHandle> muss das Schreiben unterstützen.

Es ist unsicher, fsPromises.writeFile() mehrmals für dieselbe Datei zu verwenden, ohne auf die Erfüllung des Promises zu warten.

Ähnlich wie fsPromises.readFile - fsPromises.writeFile ist eine Komfortmethode, die intern mehrere write-Aufrufe durchführt, um den übergebenen Buffer zu schreiben. Für performancekritischen Code sollten Sie fs.createWriteStream() oder filehandle.createWriteStream() verwenden.

Es ist möglich, ein <AbortSignal> zu verwenden, um ein fsPromises.writeFile() abzubrechen. Der Abbruch erfolgt "best effort", und es werden wahrscheinlich noch einige Daten geschrieben.

js
import { writeFile } from 'node:fs/promises'
import { Buffer } from 'node:buffer'

try {
  const controller = new AbortController()
  const { signal } = controller
  const data = new Uint8Array(Buffer.from('Hello Node.js'))
  const promise = writeFile('message.txt', data, { signal })

  // Brechen Sie die Anfrage ab, bevor das Promise erfüllt wird.
  controller.abort()

  await promise
} catch (err) {
  // Wenn eine Anfrage abgebrochen wird - err ist ein AbortError
  console.error(err)
}

Das Abbrechen einer laufenden Anfrage bricht keine einzelnen Betriebssystemanforderungen ab, sondern das interne Puffern, das fs.writeFile durchführt.

fsPromises.constants

Hinzugefügt in: v18.4.0, v16.17.0

Gibt ein Objekt zurück, das häufig verwendete Konstanten für Dateisystemoperationen enthält. Das Objekt ist identisch mit fs.constants. Weitere Details finden Sie unter FS-Konstanten.

Callback-API

Die Callback-APIs führen alle Operationen asynchron aus, ohne die Ereignisschleife zu blockieren, und rufen dann nach Abschluss oder Fehler eine Callback-Funktion auf.

Die Callback-APIs verwenden den zugrunde liegenden Node.js-Threadpool, um Dateisystemoperationen außerhalb des Ereignisschleifen-Threads auszuführen. Diese Operationen sind nicht synchronisiert oder threadsicher. Vorsicht ist geboten, wenn mehrere gleichzeitige Änderungen an derselben Datei vorgenommen werden, da sonst Datenbeschädigungen auftreten können.

fs.access(path[, mode], callback)

[Verlauf]

VersionÄnderungen
v20.8.0Die Konstanten fs.F_OK, fs.R_OK, fs.W_OK und fs.X_OK, die direkt auf fs vorhanden waren, sind veraltet.
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE statt ERR_INVALID_CALLBACK aus.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v6.3.0Die Konstanten wie fs.R_OK usw., die direkt auf fs vorhanden waren, wurden als weiche Veraltung in fs.constants verschoben. Daher verwenden Sie für Node.js < v6.3.0 fs, um auf diese Konstanten zuzugreifen, oder verwenden Sie etwas wie `(fs.constants
v0.11.15Hinzugefügt in: v0.11.15

Testet die Berechtigungen eines Benutzers für die Datei oder das Verzeichnis, die durch path angegeben ist. Das Argument mode ist eine optionale Ganzzahl, die die durchzuführenden Zugriffsüberprüfungen angibt. mode sollte entweder der Wert fs.constants.F_OK oder eine Maske sein, die aus dem bitweisen ODER von beliebigen Werten von fs.constants.R_OK, fs.constants.W_OK und fs.constants.X_OK besteht (z. B. fs.constants.W_OK | fs.constants.R_OK). Überprüfen Sie Dateizugriffskonstanten für mögliche Werte von mode.

Das letzte Argument, callback, ist eine Callback-Funktion, die mit einem möglichen Fehlerargument aufgerufen wird. Wenn eine der Zugriffsüberprüfungen fehlschlägt, ist das Fehlerargument ein Error-Objekt. Die folgenden Beispiele überprüfen, ob package.json existiert und ob es lesbar oder beschreibbar ist.

js
import { access, constants } from 'node:fs'

const file = 'package.json'

// Überprüfen, ob die Datei im aktuellen Verzeichnis existiert.
access(file, constants.F_OK, err => {
  console.log(`${file} ${err ? 'existiert nicht' : 'existiert'}`)
})

// Überprüfen, ob die Datei lesbar ist.
access(file, constants.R_OK, err => {
  console.log(`${file} ${err ? 'ist nicht lesbar' : 'ist lesbar'}`)
})

// Überprüfen, ob die Datei beschreibbar ist.
access(file, constants.W_OK, err => {
  console.log(`${file} ${err ? 'ist nicht beschreibbar' : 'ist beschreibbar'}`)
})

// Überprüfen, ob die Datei lesbar und beschreibbar ist.
access(file, constants.R_OK | constants.W_OK, err => {
  console.log(`${file} ${err ? 'ist nicht' : 'ist'} lesbar und beschreibbar`)
})

Verwenden Sie fs.access() nicht, um die Zugänglichkeit einer Datei zu überprüfen, bevor Sie fs.open(), fs.readFile() oder fs.writeFile() aufrufen. Dies führt zu einem Race Condition, da andere Prozesse den Zustand der Datei zwischen den beiden Aufrufen ändern können. Stattdessen sollte der Benutzercode die Datei direkt öffnen/lesen/schreiben und den Fehler behandeln, der ausgelöst wird, wenn die Datei nicht zugänglich ist.

Schreiben (NICHT EMPFOHLEN)

js
import { access, open, close } from 'node:fs'

access('myfile', err => {
  if (!err) {
    console.error('myfile existiert bereits')
    return
  }

  open('myfile', 'wx', (err, fd) => {
    if (err) throw err

    try {
      writeMyData(fd)
    } finally {
      close(fd, err => {
        if (err) throw err
      })
    }
  })
})

Schreiben (EMPFOHLEN)

js
import { open, close } from 'node:fs'

open('myfile', 'wx', (err, fd) => {
  if (err) {
    if (err.code === 'EEXIST') {
      console.error('myfile existiert bereits')
      return
    }

    throw err
  }

  try {
    writeMyData(fd)
  } finally {
    close(fd, err => {
      if (err) throw err
    })
  }
})

Lesen (NICHT EMPFOHLEN)

js
import { access, open, close } from 'node:fs'
access('myfile', err => {
  if (err) {
    if (err.code === 'ENOENT') {
      console.error('myfile existiert nicht')
      return
    }

    throw err
  }

  open('myfile', 'r', (err, fd) => {
    if (err) throw err

    try {
      readMyData(fd)
    } finally {
      close(fd, err => {
        if (err) throw err
      })
    }
  })
})

Lesen (EMPFOHLEN)

js
import { open, close } from 'node:fs'

open('myfile', 'r', (err, fd) => {
  if (err) {
    if (err.code === 'ENOENT') {
      console.error('myfile existiert nicht')
      return
    }

    throw err
  }

  try {
    readMyData(fd)
  } finally {
    close(fd, err => {
      if (err) throw err
    })
  }
})

Die oben genannten "nicht empfohlenen" Beispiele überprüfen die Zugänglichkeit und verwenden dann die Datei; die "empfohlenen" Beispiele sind besser, da sie die Datei direkt verwenden und den Fehler behandeln, falls vorhanden.

Überprüfen Sie die Zugänglichkeit einer Datei im Allgemeinen nur, wenn die Datei nicht direkt verwendet wird, z. B. wenn ihre Zugänglichkeit ein Signal von einem anderen Prozess ist.

Unter Windows können Zugriffssteuerungslisten (ACLs) in einem Verzeichnis den Zugriff auf eine Datei oder ein Verzeichnis einschränken. Die Funktion fs.access() prüft jedoch die ACL nicht und kann daher melden, dass ein Pfad zugänglich ist, selbst wenn die ACL den Benutzer am Lesen oder Schreiben daran hindert.

fs.appendFile(path, data[, options], callback)

[Versionsgeschichte]

VersionÄnderungen
v21.1.0, v20.10.0Die Option flush wird nun unterstützt.
v18.0.0Das Übergeben eines ungültigen Callbacks an das Argument callback löst nun ERR_INVALID_ARG_TYPE statt ERR_INVALID_CALLBACK aus.
v10.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v7.0.0Das übergebene options-Objekt wird niemals verändert.
v5.0.0Der Parameter file kann nun ein File Descriptor sein.
v0.6.7Hinzugefügt in: v0.6.7

Fügt asynchron Daten an eine Datei an und erstellt die Datei, falls sie noch nicht existiert. data kann eine Zeichenkette oder ein <Buffer> sein.

Die Option mode wirkt sich nur auf die neu erstellte Datei aus. Siehe fs.open() für weitere Details.

js
import { appendFile } from 'node:fs'

appendFile('message.txt', 'data to append', err => {
  if (err) throw err
  console.log('Die "data to append" wurden an die Datei angehängt!')
})

Wenn options eine Zeichenkette ist, gibt diese die Kodierung an:

js
import { appendFile } from 'node:fs'

appendFile('message.txt', 'data to append', 'utf8', callback)

Der path kann als numerischer File Descriptor angegeben werden, der zum Anhängen geöffnet wurde (mit fs.open() oder fs.openSync()). Der File Descriptor wird nicht automatisch geschlossen.

js
import { open, close, appendFile } from 'node:fs'

function closeFd(fd) {
  close(fd, err => {
    if (err) throw err
  })
}

open('message.txt', 'a', (err, fd) => {
  if (err) throw err

  try {
    appendFile(fd, 'data to append', 'utf8', err => {
      closeFd(fd)
      if (err) throw err
    })
  } catch (err) {
    closeFd(fd)
    throw err
  }
})

fs.chmod(path, mode, callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.1.30Hinzugefügt in: v0.1.30

Ändert asynchron die Berechtigungen einer Datei. An den Completion-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Siehe die POSIX chmod(2) Dokumentation für weitere Details.

js
import { chmod } from 'node:fs'

chmod('my_file.txt', 0o775, err => {
  if (err) throw err
  console.log('Die Berechtigungen für die Datei "my_file.txt" wurden geändert!')
})

Dateimodi

Das in den Methoden fs.chmod() und fs.chmodSync() verwendete Argument mode ist eine numerische Bitmaske, die mithilfe eines logischen ODER der folgenden Konstanten erstellt wird:

KonstanteOktalBeschreibung
fs.constants.S_IRUSR0o400Lesen durch Besitzer
fs.constants.S_IWUSR0o200Schreiben durch Besitzer
fs.constants.S_IXUSR0o100Ausführen/Suchen durch Besitzer
fs.constants.S_IRGRP0o40Lesen durch Gruppe
fs.constants.S_IWGRP0o20Schreiben durch Gruppe
fs.constants.S_IXGRP0o10Ausführen/Suchen durch Gruppe
fs.constants.S_IROTH0o4Lesen durch Andere
fs.constants.S_IWOTH0o2Schreiben durch Andere
fs.constants.S_IXOTH0o1Ausführen/Suchen durch Andere

Eine einfachere Methode zum Erstellen des mode ist die Verwendung einer Sequenz von drei Oktalzahlen (z. B. 765). Die linke Ziffer (7 im Beispiel) gibt die Berechtigungen für den Dateibesitzer an. Die mittlere Ziffer (6 im Beispiel) gibt die Berechtigungen für die Gruppe an. Die rechte Ziffer (5 im Beispiel) gibt die Berechtigungen für Andere an.

ZahlBeschreibung
7Lesen, Schreiben und Ausführen
6Lesen und Schreiben
5Lesen und Ausführen
4Nur Lesen
3Schreiben und Ausführen
2Nur Schreiben
1Nur Ausführen
0Keine Berechtigung

Beispielsweise bedeutet der Oktalwert 0o765:

  • Der Besitzer darf die Datei lesen, schreiben und ausführen.
  • Die Gruppe darf die Datei lesen und schreiben.
  • Andere dürfen die Datei lesen und ausführen.

Bei Verwendung von rohen Zahlen, wo Dateimodi erwartet werden, kann jeder Wert größer als 0o777 zu plattformspezifischem Verhalten führen, das nicht konsistent funktioniert. Daher werden Konstanten wie S_ISVTX, S_ISGID oder S_ISUID nicht in fs.constants verfügbar gemacht.

Einschränkungen: Unter Windows kann nur die Schreibberechtigung geändert werden, und die Unterscheidung zwischen den Berechtigungen von Gruppe, Besitzer oder Anderen wird nicht implementiert.

fs.chown(path, uid, gid, callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem file:-Protokoll sein.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.1.97Hinzugefügt in: v0.1.97

Ändert asynchron den Besitzer und die Gruppe einer Datei. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Siehe die POSIX chown(2) Dokumentation für weitere Details.

fs.close(fd[, callback])

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v15.9.0, v14.17.0Ein Standard-Callback wird jetzt verwendet, wenn keiner angegeben wird.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.0.2Hinzugefügt in: v0.0.2

Schließt den Filedescriptor. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Das Aufrufen von fs.close() auf einen beliebigen Filedescriptor (fd), der derzeit über eine andere fs-Operation verwendet wird, kann zu undefiniertem Verhalten führen.

Siehe die POSIX close(2) Dokumentation für weitere Details.

fs.copyFile(src, dest[, mode], callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v14.0.0Das Argument flags wurde in mode geändert und eine strengere Typvalidierung eingeführt.
v8.5.0Hinzugefügt in: v8.5.0

Kopiert src asynchron nach dest. Standardmäßig wird dest überschrieben, wenn es bereits existiert. Dem Callback-Funktion werden keine anderen Argumente als eine mögliche Ausnahme übergeben. Node.js gibt keine Garantien hinsichtlich der Atomarität des Kopiervorgangs ab. Wenn ein Fehler auftritt, nachdem die Zieldatei zum Schreiben geöffnet wurde, versucht Node.js, die Zieldatei zu entfernen.

mode ist eine optionale ganze Zahl, die das Verhalten des Kopiervorgangs angibt. Es ist möglich, eine Maske zu erstellen, die aus dem bitweisen ODER von zwei oder mehr Werten besteht (z. B. fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE).

  • fs.constants.COPYFILE_EXCL: Der Kopiervorgang schlägt fehl, wenn dest bereits existiert.
  • fs.constants.COPYFILE_FICLONE: Der Kopiervorgang versucht, einen Copy-on-Write-Reflink zu erstellen. Wenn die Plattform Copy-on-Write nicht unterstützt, wird ein Fallback-Kopiermechanismus verwendet.
  • fs.constants.COPYFILE_FICLONE_FORCE: Der Kopiervorgang versucht, einen Copy-on-Write-Reflink zu erstellen. Wenn die Plattform Copy-on-Write nicht unterstützt, schlägt der Vorgang fehl.
js
import { copyFile, constants } from 'node:fs'

function callback(err) {
  if (err) throw err
  console.log('source.txt wurde nach destination.txt kopiert')
}

// destination.txt wird standardmäßig erstellt oder überschrieben.
copyFile('source.txt', 'destination.txt', callback)

// Mit COPYFILE_EXCL schlägt der Vorgang fehl, wenn destination.txt existiert.
copyFile('source.txt', 'destination.txt', constants.COPYFILE_EXCL, callback)

fs.cp(src, dest[, options], callback)

[Versionsgeschichte]

VersionÄnderungen
v22.3.0Diese API ist nicht mehr experimentell.
v20.1.0, v18.17.0Akzeptiert eine zusätzliche mode-Option, um das Kopierverhalten als mode-Argument von fs.copyFile() anzugeben.
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v17.6.0, v16.15.0Akzeptiert eine zusätzliche verbatimSymlinks-Option, um anzugeben, ob die Pfadauflösung für symbolische Links durchgeführt werden soll.
v16.7.0Hinzugefügt in: v16.7.0
  • src <string> | <URL> Quellpfad zum Kopieren.

  • dest <string> | <URL> Zielpfad zum Kopieren.

  • options <Object>

    • dereference <boolean> Symbolische Links auflösen. Standard: false.

    • errorOnExist <boolean> Wenn force false ist und das Ziel existiert, wird ein Fehler ausgelöst. Standard: false.

    • filter <Function> Funktion zum Filtern kopierter Dateien/Verzeichnisse. Gibt true zurück, um das Element zu kopieren, false, um es zu ignorieren. Wenn ein Verzeichnis ignoriert wird, wird auch der gesamte Inhalt übersprungen. Kann auch ein Promise zurückgeben, das mit true oder false aufgelöst wird. Standard: undefined.

    • src <string> Quellpfad zum Kopieren.

    • dest <string> Zielpfad zum Kopieren.

    • Gibt zurück: <boolean> | <Promise> Ein Wert, der in einen booleschen Wert umgewandelt werden kann, oder ein Promise, das mit einem solchen Wert erfüllt wird.

    • force <boolean> Bestehende Datei oder Verzeichnis überschreiben. Der Kopiervorgang ignoriert Fehler, wenn Sie dies auf false setzen und das Ziel existiert. Verwenden Sie die Option errorOnExist, um dieses Verhalten zu ändern. Standard: true.

    • mode <integer> Modifikatoren für den Kopiervorgang. Standard: 0. Siehe mode-Flag von fs.copyFile().

    • preserveTimestamps <boolean> Wenn true, werden Zeitstempel von src beibehalten. Standard: false.

    • recursive <boolean> Verzeichnisse rekursiv kopieren. Standard: false

    • verbatimSymlinks <boolean> Wenn true, wird die Pfadauflösung für symbolische Links übersprungen. Standard: false

  • callback <Function>

Kopiert asynchron die gesamte Verzeichnisstruktur von src nach dest, einschließlich Unterverzeichnisse und Dateien.

Beim Kopieren eines Verzeichnisses in ein anderes Verzeichnis werden keine Globs unterstützt, und das Verhalten ähnelt cp dir1/ dir2/.

fs.createReadStream(path[, options])

[Historie]

VersionÄnderungen
v16.10.0Die Option fs benötigt keine open-Methode, wenn ein fd bereitgestellt wurde.
v16.10.0Die Option fs benötigt keine close-Methode, wenn autoClose auf false gesetzt ist.
v15.5.0Unterstützung für AbortSignal hinzugefügt.
v15.4.0Die Option fd akzeptiert FileHandle-Argumente.
v14.0.0Standardwert von emitClose auf true geändert.
v13.6.0, v12.17.0Die fs-Optionen ermöglichen das Überschreiben der verwendeten fs-Implementierung.
v12.10.0Option emitClose aktiviert.
v11.0.0Neue Einschränkungen für start und end eingeführt, wobei in Fällen, in denen die Eingabewerte nicht sinnvoll verarbeitet werden können, aussagekräftigere Fehler geworfen werden.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Das übergebene options-Objekt wird niemals modifiziert.
v2.3.0Das übergebene options-Objekt kann jetzt eine Zeichenkette sein.
v0.1.31Hinzugefügt in: v0.1.31

options kann start und end Werte enthalten, um einen Bereich von Bytes aus der Datei anstatt der gesamten Datei zu lesen. Sowohl start als auch end sind inklusiv und beginnen bei 0. Zulässige Werte liegen im Bereich [0, Number.MAX_SAFE_INTEGER]. Wenn fd angegeben ist und start ausgelassen oder undefined ist, liest fs.createReadStream() sequentiell von der aktuellen Dateiposition. encoding kann jeder der von <Buffer> akzeptierten sein.

Wenn fd angegeben ist, ignoriert ReadStream das Argument path und verwendet den angegebenen Dateideskriptor. Das bedeutet, dass kein 'open'-Ereignis emittiert wird. fd sollte blockierend sein; nicht blockierende fds sollten an <net.Socket> übergeben werden.

Wenn fd auf ein Zeichengerät verweist, das nur blockierende Lesevorgänge unterstützt (z. B. Tastatur oder Soundkarte), beenden Lesevorgänge erst, wenn Daten verfügbar sind. Dies kann verhindern, dass der Prozess beendet wird und der Stream auf natürliche Weise geschlossen wird.

Standardmäßig emittiert der Stream ein 'close'-Ereignis, nachdem er zerstört wurde. Setzen Sie die Option emitClose auf false, um dieses Verhalten zu ändern.

Durch die Angabe der Option fs ist es möglich, die entsprechenden fs-Implementierungen für open, read und close zu überschreiben. Bei Angabe der Option fs ist ein Überschreiben von read erforderlich. Wenn kein fd angegeben ist, ist auch ein Überschreiben von open erforderlich. Wenn autoClose auf true gesetzt ist, ist auch ein Überschreiben von close erforderlich.

js
import { createReadStream } from 'node:fs'

// Erstellt einen Stream von einem Zeichengerät.
const stream = createReadStream('/dev/input/event0')
setTimeout(() => {
  stream.close() // Dies schließt den Stream möglicherweise nicht.
  // Künstliches Markieren des Endes des Streams, als ob die zugrunde liegende Ressource
  // selbst das Ende der Datei angezeigt hätte, ermöglicht das Schließen des Streams.
  // Dies bricht keine ausstehenden Lesevorgänge ab, und wenn ein solcher Vorgang vorhanden ist,
  // kann der Prozess möglicherweise immer noch nicht erfolgreich beendet werden, bis er abgeschlossen ist.
  stream.push(null)
  stream.read(0)
}, 100)

Wenn autoClose auf false gesetzt ist, wird der Dateideskriptor nicht geschlossen, selbst wenn ein Fehler auftritt. Es liegt in der Verantwortung der Anwendung, ihn zu schließen und sicherzustellen, dass kein Dateideskriptor-Leck entsteht. Wenn autoClose auf true gesetzt ist (Standardverhalten), wird der Dateideskriptor bei 'error' oder 'end' automatisch geschlossen.

mode legt den Dateimodus (Berechtigungen und Sticky-Bits) fest, aber nur, wenn die Datei erstellt wurde.

Ein Beispiel zum Lesen der letzten 10 Bytes einer Datei mit einer Länge von 100 Bytes:

js
import { createReadStream } from 'node:fs'

createReadStream('sample.txt', { start: 90, end: 99 })

Wenn options eine Zeichenkette ist, gibt diese die Kodierung an.

fs.createWriteStream(path[, options])

[Verlauf]

VersionÄnderungen
v21.0.0, v20.10.0Die Option flush wird jetzt unterstützt.
v16.10.0Die Option fs benötigt keine open-Methode, wenn ein fd bereitgestellt wurde.
v16.10.0Die Option fs benötigt keine close-Methode, wenn autoClose false ist.
v15.5.0Unterstützung für AbortSignal hinzugefügt.
v15.4.0Die Option fd akzeptiert FileHandle-Argumente.
v14.0.0Standardwert von emitClose auf true geändert.
v13.6.0, v12.17.0Die fs-Optionen ermöglichen das Überschreiben der verwendeten fs-Implementierung.
v12.10.0Option emitClose aktiviert.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Das übergebene options-Objekt wird niemals modifiziert.
v5.5.0Die Option autoClose wird jetzt unterstützt.
v2.3.0Das übergebene options-Objekt kann jetzt eine Zeichenkette sein.
v0.1.31Hinzugefügt in: v0.1.31

options kann auch eine start-Option enthalten, um das Schreiben von Daten an einer Position hinter dem Dateianfang zu ermöglichen. Zulässige Werte liegen im Bereich [0, Number.MAX_SAFE_INTEGER]. Das Ändern einer Datei anstelle des Ersetzens kann erfordern, dass die Option flags auf r+ anstelle des Standardwerts w gesetzt wird. Die encoding kann eine beliebige der von <Buffer> akzeptierten sein.

Wenn autoClose auf true gesetzt ist (Standardverhalten), wird der Dateideskriptor bei 'error' oder 'finish' automatisch geschlossen. Wenn autoClose false ist, wird der Dateideskriptor nicht geschlossen, selbst wenn ein Fehler auftritt. Es liegt in der Verantwortung der Anwendung, ihn zu schließen und sicherzustellen, dass kein Dateideskriptor-Leak auftritt.

Standardmäßig sendet der Stream ein 'close'-Ereignis, nachdem er zerstört wurde. Setzen Sie die Option emitClose auf false, um dieses Verhalten zu ändern.

Durch die Bereitstellung der Option fs ist es möglich, die entsprechenden fs-Implementierungen für open, write, writev und close zu überschreiben. Das Überschreiben von write() ohne writev() kann die Leistung verringern, da einige Optimierungen (_writev()) deaktiviert werden. Bei Angabe der Option fs sind Überschreibungen für mindestens eine von write und writev erforderlich. Wenn keine fd-Option angegeben ist, ist auch eine Überschreibung für open erforderlich. Wenn autoClose true ist, ist auch eine Überschreibung für close erforderlich.

Wie bei <fs.ReadStream> ignoriert <fs.WriteStream>, wenn fd angegeben ist, das path-Argument und verwendet den angegebenen Dateideskriptor. Dies bedeutet, dass kein 'open'-Ereignis ausgelöst wird. fd sollte blockierend sein; nicht blockierende fds sollten an <net.Socket> übergeben werden.

Wenn options eine Zeichenkette ist, gibt sie die Kodierung an.

fs.exists(path, callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v1.0.0Veraltet seit: v1.0.0
v0.0.2Hinzugefügt in: v0.0.2

[Stabil: 0 - Veraltet]

Stabil: 0 Stabilität: 0 - Veraltet: Verwenden Sie stattdessen fs.stat() oder fs.access().

Überprüft, ob das Element am angegebenen path im Dateisystem existiert. Ruft dann das callback-Argument mit entweder true oder false auf:

js
import { exists } from 'node:fs'

exists('/etc/passwd', e => {
  console.log(e ? 'es existiert' : 'kein passwd!')
})

Die Parameter für diesen Callback sind nicht konsistent mit anderen Node.js-Callbacks. Normalerweise ist der erste Parameter eines Node.js-Callbacks ein err-Parameter, optional gefolgt von anderen Parametern. Der fs.exists()-Callback hat nur einen booleschen Parameter. Dies ist ein Grund, warum fs.access() anstelle von fs.exists() empfohlen wird.

Wenn path ein symbolischer Link ist, wird diesem gefolgt. Wenn also path existiert, aber auf ein nicht existierendes Element verweist, erhält der Callback den Wert false.

Die Verwendung von fs.exists() zum Überprüfen der Existenz einer Datei, bevor fs.open(), fs.readFile() oder fs.writeFile() aufgerufen wird, wird nicht empfohlen. Dies führt zu einem Race Condition, da andere Prozesse den Zustand der Datei zwischen den beiden Aufrufen ändern können. Stattdessen sollte der Benutzercode die Datei direkt öffnen/lesen/schreiben und den Fehler behandeln, der ausgelöst wird, wenn die Datei nicht existiert.

Schreiben (NICHT EMPFOHLEN)

js
import { exists, open, close } from 'node:fs'

exists('myfile', e => {
  if (e) {
    console.error('myfile existiert bereits')
  } else {
    open('myfile', 'wx', (err, fd) => {
      if (err) throw err

      try {
        writeMyData(fd)
      } finally {
        close(fd, err => {
          if (err) throw err
        })
      }
    })
  }
})

Schreiben (EMPFOHLEN)

js
import { open, close } from 'node:fs'
open('myfile', 'wx', (err, fd) => {
  if (err) {
    if (err.code === 'EEXIST') {
      console.error('myfile existiert bereits')
      return
    }

    throw err
  }

  try {
    writeMyData(fd)
  } finally {
    close(fd, err => {
      if (err) throw err
    })
  }
})

Lesen (NICHT EMPFOHLEN)

js
import { open, close, exists } from 'node:fs'

exists('myfile', e => {
  if (e) {
    open('myfile', 'r', (err, fd) => {
      if (err) throw err

      try {
        readMyData(fd)
      } finally {
        close(fd, err => {
          if (err) throw err
        })
      }
    })
  } else {
    console.error('myfile existiert nicht')
  }
})

Lesen (EMPFOHLEN)

js
import { open, close } from 'node:fs'

open('myfile', 'r', (err, fd) => {
  if (err) {
    if (err.code === 'ENOENT') {
      console.error('myfile existiert nicht')
      return
    }

    throw err
  }

  try {
    readMyData(fd)
  } finally {
    close(fd, err => {
      if (err) throw err
    })
  }
})

Die oben genannten "nicht empfohlenen" Beispiele prüfen auf Existenz und verwenden dann die Datei; die "empfohlenen" Beispiele sind besser, da sie die Datei direkt verwenden und den Fehler, falls vorhanden, behandeln.

Im Allgemeinen sollte nur dann auf die Existenz einer Datei geprüft werden, wenn die Datei nicht direkt verwendet wird, z. B. wenn ihre Existenz ein Signal von einem anderen Prozess ist.

fs.fchmod(fd, mode, callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.4.7Hinzugefügt in: v0.4.7

Legt die Berechtigungen für die Datei fest. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Weitere Informationen finden Sie in der POSIX fchmod(2) Dokumentation.

fs.fchown(fd, uid, gid, callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.4.7Hinzugefügt in: v0.4.7

Legt den Besitzer der Datei fest. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Weitere Informationen finden Sie in der POSIX fchown(2) Dokumentation.

fs.fdatasync(fd, callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der Parameter callback ist nicht mehr optional. Das Nichtübergeben löst zur Laufzeit einen TypeError aus.
v7.0.0Der Parameter callback ist nicht mehr optional. Das Nichtübergeben löst eine Deprecation-Warnung mit der ID DEP0013 aus.
v0.1.96Hinzugefügt in: v0.1.96

Zwingt alle aktuell gepufferten E/A-Operationen, die mit der Datei verbunden sind, in den synchronisierten E/A-Abschlusszustand des Betriebssystems. Einzelheiten finden Sie in der POSIX fdatasync(2) Dokumentation. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

fs.fstat(fd[, options], callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.5.0Akzeptiert ein zusätzliches options-Objekt, um anzugeben, ob die zurückgegebenen numerischen Werte bigint sein sollen.
v10.0.0Der Parameter callback ist nicht mehr optional. Das Nichtübergeben löst zur Laufzeit einen TypeError aus.
v7.0.0Der Parameter callback ist nicht mehr optional. Das Nichtübergeben löst eine Deprecation-Warnung mit der ID DEP0013 aus.
v0.1.95Hinzugefügt in: v0.1.95

Ruft den Callback mit den <fs.Stats> für den Dateideskriptor auf.

Weitere Details finden Sie in der POSIX fstat(2) Dokumentation.

fs.fsync(fd, callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.1.96Hinzugefügt in: v0.1.96

Fordert an, dass alle Daten für den geöffneten Dateideskriptor auf das Speichergerät geschrieben werden. Die spezifische Implementierung ist betriebssystemspezifisch und gerätespezifisch. Weitere Details finden Sie in der POSIX fsync(2) Dokumentation. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

fs.ftruncate(fd[, len], callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.8.6Hinzugefügt in: v0.8.6

Stutzt den Dateideskriptor. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Siehe die POSIX ftruncate(2) Dokumentation für weitere Details.

War die Datei, auf die der Dateideskriptor verweist, größer als len Bytes, bleiben nur die ersten len Bytes in der Datei erhalten.

Das folgende Programm behält beispielsweise nur die ersten vier Bytes der Datei bei:

js
import { open, close, ftruncate } from 'node:fs'

function closeFd(fd) {
  close(fd, err => {
    if (err) throw err
  })
}

open('temp.txt', 'r+', (err, fd) => {
  if (err) throw err

  try {
    ftruncate(fd, 4, err => {
      closeFd(fd)
      if (err) throw err
    })
  } catch (err) {
    closeFd(fd)
    if (err) throw err
  }
})

War die Datei vorher kürzer als len Bytes, wird sie erweitert, und der erweiterte Teil wird mit Nullbytes ('\0') gefüllt:

Ist len negativ, wird 0 verwendet.

fs.futimes(fd, atime, mtime, callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das Argument callback löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v4.1.0Numerische Zeichenketten, NaN und Infinity sind jetzt als Zeitangaben zulässig.
v0.4.2Hinzugefügt in: v0.4.2

Ändert die Zeitstempel des Dateisystems des durch den angegebenen Dateideskriptor referenzierten Objekts. Siehe fs.utimes().

fs.glob(pattern[, options], callback)

[Verlauf]

VersionÄnderungen
v22.2.0Unterstützung für withFileTypes als Option hinzugefügt.
v22.0.0Hinzugefügt in: v22.0.0

[Stabil: 1 - Experimentell]

Stabil: 1 Stabilität: 1 - Experimentell

  • pattern <string> | <string[]>

  • options <Object>

    • cwd <string> aktuelles Arbeitsverzeichnis. Standard: process.cwd()
    • exclude <Function> Funktion zum Filtern von Dateien/Verzeichnissen. Gibt true zurück, um das Element auszuschließen, false, um es einzuschließen. Standard: undefined.
    • withFileTypes <boolean> true, wenn der Glob Pfade als Dirents zurückgeben soll, andernfalls false. Standard: false.
  • callback <Function>

  • Ruft die Dateien ab, die mit dem angegebenen Muster übereinstimmen.

js
import { glob } from 'node:fs'

glob('**/*.js', (err, matches) => {
  if (err) throw err
  console.log(matches)
})
js
const { glob } = require('node:fs')

glob('**/*.js', (err, matches) => {
  if (err) throw err
  console.log(matches)
})

fs.lchmod(path, mode, callback)

[History]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v16.0.0Der zurückgegebene Fehler kann ein AggregateError sein, wenn mehr als ein Fehler zurückgegeben wird.
v10.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst zur Laufzeit einen TypeError aus.
v7.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst eine Deprecation-Warnung mit der ID DEP0013 aus.
v0.4.7Seit v0.4.7 veraltet

Ändert die Berechtigungen eines symbolischen Links. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Diese Methode ist nur unter macOS implementiert.

Weitere Details finden Sie in der POSIX lchmod(2) Dokumentation.

fs.lchown(path, uid, gid, callback)

[History]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.6.0Diese API ist nicht mehr veraltet.
v10.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst zur Laufzeit einen TypeError aus.
v7.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst eine Deprecation-Warnung mit der ID DEP0013 aus.
v0.4.7Nur Dokumentations-Veralterung.

Setzt den Besitzer des symbolischen Links. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Weitere Details finden Sie in der POSIX lchown(2) Dokumentation.

fs.lutimes(path, atime, mtime, callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v14.5.0, v12.19.0Hinzugefügt in: v14.5.0, v12.19.0

Ändert die Zugriffs- und Änderungszeiten einer Datei auf die gleiche Weise wie fs.utimes(), mit dem Unterschied, dass, wenn der Pfad auf einen symbolischen Link verweist, der Link nicht dereferenziert wird: Stattdessen werden die Zeitstempel des symbolischen Links selbst geändert.

Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

fs.link(existingPath, newPath, callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Die Parameter existingPath und newPath können WHATWG URL-Objekte mit dem Protokoll file: sein. Die Unterstützung ist derzeit noch experimentell.
v7.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.1.31Hinzugefügt in: v0.1.31

Erstellt einen neuen Link von existingPath zu newPath. Siehe die POSIX link(2) Dokumentation für weitere Details. Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

fs.lstat(path[, options], callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.5.0Akzeptiert ein zusätzliches options-Objekt, um anzugeben, ob die zurückgegebenen numerischen Werte BigInts sein sollen.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.1.30Hinzugefügt in: v0.1.30

Ruft die <fs.Stats> für den symbolischen Link ab, auf den der Pfad verweist. Der Callback erhält zwei Argumente (err, stats), wobei stats ein <fs.Stats>-Objekt ist. lstat() ist identisch mit stat(), außer dass, wenn path ein symbolischer Link ist, der Link selbst geprüft wird, nicht die Datei, auf die er verweist.

Siehe die POSIX lstat(2) Dokumentation für weitere Details.

fs.mkdir(path[, options], callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v13.11.0, v12.17.0Im recursive-Modus erhält der Callback jetzt den ersten erstellten Pfad als Argument.
v10.12.0Das zweite Argument kann jetzt ein options-Objekt mit den Eigenschaften recursive und mode sein.
v10.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst zur Laufzeit einen TypeError aus.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem file:-Protokoll sein.
v7.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst eine Deprecation-Warnung mit der ID DEP0013 aus.
v0.1.8Hinzugefügt in: v0.1.8

Erstellt asynchron ein Verzeichnis.

Der Callback erhält eine mögliche Ausnahme und, wenn recursive true ist, den ersten erstellten Verzeichnispfad, (err[, path]). path kann auch dann undefined sein, wenn recursive true ist, wenn kein Verzeichnis erstellt wurde (z. B. wenn es bereits vorher erstellt wurde).

Das optionale options-Argument kann eine ganze Zahl sein, die mode (Berechtigungen und Sticky Bits) angibt, oder ein Objekt mit einer mode-Eigenschaft und einer recursive-Eigenschaft, die angibt, ob übergeordnete Verzeichnisse erstellt werden sollen. Ein Aufruf von fs.mkdir(), wenn path ein bereits existierendes Verzeichnis ist, führt nur dann zu einem Fehler, wenn recursive false ist. Wenn recursive false ist und das Verzeichnis existiert, tritt ein EEXIST-Fehler auf.

js
import { mkdir } from 'node:fs'

// Erstellt ./tmp/a/apple, unabhängig davon, ob ./tmp und ./tmp/a existieren.
mkdir('./tmp/a/apple', { recursive: true }, err => {
  if (err) throw err
})

Unter Windows führt die Verwendung von fs.mkdir() im Stammverzeichnis selbst mit Rekursion zu einem Fehler:

js
import { mkdir } from 'node:fs'

mkdir('/', { recursive: true }, err => {
  // => [Error: EPERM: operation not permitted, mkdir 'C:\']
})

Siehe die POSIX mkdir(2) Dokumentation für weitere Details.

fs.mkdtemp(prefix[, options], callback)

[Historie]

VersionÄnderungen
v20.6.0, v18.19.0Der Parameter prefix akzeptiert jetzt Puffer und URLs.
v18.0.0Das Übergeben eines ungültigen Callbacks an das Argument callback löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v16.5.0, v14.18.0Der Parameter prefix akzeptiert jetzt eine leere Zeichenkette.
v10.0.0Der Parameter callback ist nicht mehr optional. Das Nichtübergeben löst zur Laufzeit einen TypeError aus.
v7.0.0Der Parameter callback ist nicht mehr optional. Das Nichtübergeben löst eine Deprecation-Warnung mit der ID DEP0013 aus.
v6.2.1Der Parameter callback ist jetzt optional.
v5.10.0Hinzugefügt in: v5.10.0

Erstellt ein eindeutiges temporäres Verzeichnis.

Generiert sechs zufällige Zeichen, die an ein erforderliches prefix angehängt werden, um ein eindeutiges temporäres Verzeichnis zu erstellen. Aufgrund von Plattforminkonsistenzen sollten nachgestellte X-Zeichen im prefix vermieden werden. Einige Plattformen, insbesondere die BSDs, können mehr als sechs zufällige Zeichen zurückgeben und nachgestellte X-Zeichen im prefix durch zufällige Zeichen ersetzen.

Der Pfad des erstellten Verzeichnisses wird als Zeichenkette an den zweiten Parameter des Callbacks übergeben.

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer encoding-Eigenschaft, die die zu verwendende Zeichencodierung angibt.

js
import { mkdtemp } from 'node:fs'
import { join } from 'node:path'
import { tmpdir } from 'node:os'

mkdtemp(join(tmpdir(), 'foo-'), (err, directory) => {
  if (err) throw err
  console.log(directory)
  // Gibt aus: /tmp/foo-itXde2 oder C:\Users\...\AppData\Local\Temp\foo-itXde2
})

Die Methode fs.mkdtemp() hängt die sechs zufällig ausgewählten Zeichen direkt an die prefix-Zeichenkette an. Wenn beispielsweise ein Verzeichnis /tmp vorhanden ist und die Absicht besteht, ein temporäres Verzeichnis innerhalb von /tmp zu erstellen, muss das prefix mit einem plattformspezifischen Pfadtrennzeichen enden (require('node:path').sep).

js
import { tmpdir } from 'node:os'
import { mkdtemp } from 'node:fs'

// Das übergeordnete Verzeichnis für das neue temporäre Verzeichnis
const tmpDir = tmpdir()

// Diese Methode ist *FALSCH*:
mkdtemp(tmpDir, (err, directory) => {
  if (err) throw err
  console.log(directory)
  // Gibt etwas Ähnliches wie `/tmpabc123` aus.
  // Ein neues temporäres Verzeichnis wird im Stamm des Dateisystems erstellt,
  // anstatt *innerhalb* des `/tmp`-Verzeichnisses.
})

// Diese Methode ist *RICHTIG*:
import { sep } from 'node:path'
mkdtemp(`${tmpDir}${sep}`, (err, directory) => {
  if (err) throw err
  console.log(directory)
  // Gibt etwas Ähnliches wie `/tmp/abc123` aus.
  // Ein neues temporäres Verzeichnis wird innerhalb
  // des `/tmp`-Verzeichnisses erstellt.
})

fs.open(path[, flags[, mode]], callback)

[Versionsgeschichte]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v11.1.0Das Argument flags ist nun optional und standardmäßig auf 'r' gesetzt.
v9.9.0Die Flags as und as+ werden nun unterstützt.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.0.2Hinzugefügt in: v0.0.2

Asynchrones Öffnen von Dateien. Weitere Details finden Sie in der POSIX open(2) Dokumentation.

mode setzt den Dateimodus (Berechtigungen und Sticky Bits), aber nur, wenn die Datei erstellt wurde. Unter Windows kann nur die Schreibberechtigung manipuliert werden; siehe fs.chmod().

Der Callback erhält zwei Argumente (err, fd).

Einige Zeichen (\< \> : " / \ | ? *) sind unter Windows reserviert, wie in Benennen von Dateien, Pfaden und Namespaces dokumentiert. Unter NTFS öffnet Node.js, wenn der Dateiname einen Doppelpunkt enthält, einen Dateisystemstrom, wie auf dieser MSDN-Seite beschrieben.

Auf fs.open() basierende Funktionen zeigen dieses Verhalten ebenfalls: fs.writeFile(), fs.readFile() usw.

fs.openAsBlob(path[, options])

Hinzugefügt in: v19.8.0

[Stabil: 1 - Experimentell]

Stabil: 1 Stabilität: 1 - Experimentell

Gibt ein <Blob> zurück, dessen Daten vom angegebenen File unterstützt werden.

Die Datei darf nach der Erstellung des <Blob> nicht mehr verändert werden. Jegliche Änderungen führen dazu, dass das Lesen der <Blob>-Daten mit einem DOMException-Fehler fehlschlägt. Synchrone Stat-Operationen an der Datei werden beim Erstellen des Blob und vor jeder Leseoperation durchgeführt, um zu erkennen, ob die Datei-Daten auf der Festplatte verändert wurden.

js
import { openAsBlob } from 'node:fs'

const blob = await openAsBlob('the.file.txt')
const ab = await blob.arrayBuffer()
blob.stream()
js
const { openAsBlob } = require('node:fs')

;(async () => {
  const blob = await openAsBlob('the.file.txt')
  const ab = await blob.arrayBuffer()
  blob.stream()
})()

fs.opendir(path[, options], callback)

[Verlauf]

VersionÄnderungen
v20.1.0, v18.17.0Option recursive hinzugefügt.
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v13.1.0, v12.16.0Die Option bufferSize wurde eingeführt.
v12.12.0Hinzugefügt in: v12.12.0

Öffnet asynchron ein Verzeichnis. Weitere Informationen finden Sie in der POSIX-Dokumentation zu opendir(3).

Erstellt ein <fs.Dir>, das alle weiteren Funktionen zum Lesen von und Bereinigen des Verzeichnisses enthält.

Die Option encoding legt die Codierung für den path beim Öffnen des Verzeichnisses und bei nachfolgenden Lesevorgängen fest.

fs.read(fd, buffer, offset, length, position, callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das Argument callback löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.10.0Der Parameter buffer kann nun ein beliebiges TypedArray oder ein DataView sein.
v7.4.0Der Parameter buffer kann nun ein Uint8Array sein.
v6.0.0Der Parameter length kann nun 0 sein.
v0.0.2Hinzugefügt in: v0.0.2
  • fd <Integer>
  • buffer <Buffer> | <TypedArray> | <DataView> Der Puffer, in den die Daten geschrieben werden.
  • offset <Integer> Die Position in buffer, an die die Daten geschrieben werden sollen.
  • length <Integer> Die Anzahl der zu lesenden Bytes.
  • position <Integer> | <BigInt> | <Null> Gibt an, wo mit dem Lesen in der Datei begonnen werden soll. Wenn position null oder -1 ist, werden Daten ab der aktuellen Dateiposition gelesen, und die Dateiposition wird aktualisiert. Wenn position eine nicht-negative ganze Zahl ist, bleibt die Dateiposition unverändert.
  • callback <Funktion>

Liest Daten aus der durch fd angegebenen Datei.

Der Callback erhält die drei Argumente (err, bytesRead, buffer).

Wenn die Datei nicht gleichzeitig geändert wird, wird das Dateiende erreicht, wenn die Anzahl der gelesenen Bytes Null ist.

Wenn diese Methode als ihre util.promisify()ierte Version aufgerufen wird, gibt sie ein Promise für ein Object mit den Eigenschaften bytesRead und buffer zurück.

Die Methode fs.read() liest Daten aus der Datei, die durch den Dateideskriptor (fd) angegeben ist. Das Argument length gibt die maximale Anzahl von Bytes an, die Node.js versuchen wird, vom Kernel zu lesen. Die tatsächlich gelesene Byteanzahl (bytesRead) kann jedoch aus verschiedenen Gründen niedriger sein als die angegebene length.

Beispielsweise:

  • Wenn die Datei kürzer als die angegebene length ist, wird bytesRead auf die tatsächlich gelesene Byteanzahl gesetzt.
  • Wenn die Datei EOF (End of File) erreicht, bevor der Puffer gefüllt werden konnte, liest Node.js alle verfügbaren Bytes bis zum Erreichen von EOF, und der Parameter bytesRead im Callback gibt die tatsächlich gelesene Byteanzahl an, die möglicherweise kleiner als die angegebene length ist.
  • Wenn sich die Datei auf einem langsamen Netzwerk-filesystem befindet oder während des Lesens auf andere Probleme stößt, kann bytesRead kleiner als die angegebene length sein.

Daher ist es bei der Verwendung von fs.read() wichtig, den Wert von bytesRead zu überprüfen, um festzustellen, wie viele Bytes tatsächlich aus der Datei gelesen wurden. Abhängig von Ihrer Anwendungslogik müssen Sie möglicherweise Fälle behandeln, in denen bytesRead kleiner als die angegebene length ist, z. B. indem Sie den Lesevorgang in eine Schleife einbetten, wenn Sie eine Mindestanzahl von Bytes benötigen.

Dieses Verhalten ähnelt der POSIX-Funktion preadv2.

fs.read(fd[, options], callback)

[Historie]

VersionÄnderungen
v13.11.0, v12.17.0Ein Options-Objekt kann übergeben werden, um buffer, offset, length und position optional zu machen.
v13.11.0, v12.17.0Hinzugefügt in: v13.11.0, v12.17.0

Ähnlich der Funktion fs.read() nimmt diese Version ein optionales options-Objekt entgegen. Wird kein options-Objekt angegeben, werden die oben genannten Standardwerte verwendet.

fs.read(fd, buffer[, options], callback)

Hinzugefügt in: v18.2.0, v16.17.0

Ähnlich der Funktion fs.read() verwendet diese Version ein optionales options-Objekt. Wenn kein options-Objekt angegeben ist, werden die oben genannten Werte als Standard verwendet.

fs.readdir(path[, options], callback)

[Verlauf]

VersionÄnderungen
v20.1.0, v18.17.0Option recursive hinzugefügt.
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.10.0Neue Option withFileTypes hinzugefügt.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v6.0.0Der options-Parameter wurde hinzugefügt.
v0.1.8Hinzugefügt in: v0.1.8

Liest den Inhalt eines Verzeichnisses. Der Callback erhält zwei Argumente (err, files), wobei files ein Array der Namen der Dateien im Verzeichnis ist, ausgenommen '.' und '..'.

Siehe die POSIX readdir(3) Dokumentation für weitere Details.

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer Eigenschaft encoding, die die zu verwendende Zeichencodierung für die an den Callback übergebenen Dateinamen angibt. Wenn encoding auf 'buffer' gesetzt ist, werden die zurückgegebenen Dateinamen als <Buffer> Objekte übergeben.

Wenn options.withFileTypes auf true gesetzt ist, enthält das Array files <fs.Dirent> Objekte.

fs.readFile(path[, options], callback)

[Versionsgeschichte]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v16.0.0Der zurückgegebene Fehler kann ein AggregateError sein, wenn mehr als ein Fehler zurückgegeben wird.
v15.2.0, v14.17.0Das options-Argument kann ein AbortSignal enthalten, um eine laufende readFile-Anfrage abzubrechen.
v10.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst zur Laufzeit einen TypeError aus.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem file:-Protokoll sein.
v7.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst eine Deprecation-Warnung mit der ID DEP0013 aus.
v5.1.0Der callback wird im Erfolgsfall immer mit null als error-Parameter aufgerufen.
v5.0.0Der path-Parameter kann nun ein File Descriptor sein.
v0.1.29Hinzugefügt in: v0.1.29

Liest asynchron den gesamten Inhalt einer Datei.

js
import { readFile } from 'node:fs'

readFile('/etc/passwd', (err, data) => {
  if (err) throw err
  console.log(data)
})

Der Callback erhält zwei Argumente (err, data), wobei data der Inhalt der Datei ist.

Wenn keine Kodierung angegeben ist, wird der Rohbuffer zurückgegeben.

Wenn options eine Zeichenkette ist, gibt diese die Kodierung an:

js
import { readFile } from 'node:fs'

readFile('/etc/passwd', 'utf8', callback)

Wenn der Pfad ein Verzeichnis ist, ist das Verhalten von fs.readFile() und fs.readFileSync() plattformabhängig. Unter macOS, Linux und Windows wird ein Fehler zurückgegeben. Unter FreeBSD wird eine Darstellung des Inhalts des Verzeichnisses zurückgegeben.

js
import { readFile } from 'node:fs'

// macOS, Linux und Windows
readFile('<directory>', (err, data) => {
  // => [Error: EISDIR: illegale Operation auf einem Verzeichnis, read <directory>]
})

//  FreeBSD
readFile('<directory>', (err, data) => {
  // => null, <data>
})

Es ist möglich, eine laufende Anfrage mit einem AbortSignal abzubrechen. Wenn eine Anfrage abgebrochen wird, wird der Callback mit einem AbortError aufgerufen:

js
import { readFile } from 'node:fs'

const controller = new AbortController()
const signal = controller.signal
readFile(fileInfo[0].name, { signal }, (err, buf) => {
  // ...
})
// Wenn Sie die Anfrage abbrechen möchten
controller.abort()

Die Funktion fs.readFile() puffert die gesamte Datei. Um den Speicherbedarf zu minimieren, bevorzugen Sie nach Möglichkeit das Streaming über fs.createReadStream().

Das Abbrechen einer laufenden Anfrage bricht nicht einzelne Betriebssystemanforderungen ab, sondern eher die interne Pufferung, die fs.readFile durchführt.

Dateideskriptoren

Leistungsaspekte

Die Methode fs.readFile() liest den Inhalt einer Datei asynchron und abschnittsweise in den Speicher, wodurch der Event-Loop zwischen den einzelnen Abschnitten wechseln kann. Dies ermöglicht es dem Lesevorgang, weniger Einfluss auf andere Aktivitäten zu haben, die den zugrunde liegenden libuv-Thread-Pool verwenden, bedeutet aber auch, dass das Lesen einer vollständigen Datei in den Speicher länger dauert.

Der zusätzliche Lese-Overhead kann auf verschiedenen Systemen stark variieren und hängt von der Art der zu lesenden Datei ab. Wenn es sich bei der Datei nicht um eine reguläre Datei (z. B. eine Pipe) handelt und Node.js keine tatsächliche Dateigröße ermitteln kann, wird bei jedem Lesevorgang 64 KiB Daten geladen. Bei regulären Dateien verarbeitet jeder Lesevorgang 512 KiB Daten.

Für Anwendungen, die ein möglichst schnelles Lesen des Dateiinhalts erfordern, ist es besser, fs.read() direkt zu verwenden und den Lesevorgang des vollständigen Dateiinhalts selbst durch den Anwendungscode zu verwalten.

Das Node.js GitHub-Issue #25741 bietet weitere Informationen und eine detaillierte Analyse der Leistung von fs.readFile() für verschiedene Dateigrößen in verschiedenen Node.js-Versionen.

fs.readlink(path[, options], callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.1.31Hinzugefügt in: v0.1.31

Liest den Inhalt des symbolischen Links, auf den sich path bezieht. Der Callback erhält zwei Argumente (err, linkString).

Weitere Details finden Sie in der POSIX-Dokumentation zu readlink(2).

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer Eigenschaft encoding, die die zu verwendende Zeichencodierung für den an den Callback übergebenen Linkpfad angibt. Wenn encoding auf 'buffer' gesetzt ist, wird der zurückgegebene Linkpfad als <Buffer>-Objekt übergeben.

fs.readv(fd, buffers[, position], callback)

[History]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v13.13.0, v12.17.0Hinzugefügt in: v13.13.0, v12.17.0

Liest von einer durch fd angegebenen Datei und schreibt mit readv() in ein Array von ArrayBufferViews.

position ist der Offset vom Dateianfang, von dem aus Daten gelesen werden sollen. Wenn typeof position !== 'number', werden die Daten von der aktuellen Position gelesen.

Der Callback erhält drei Argumente: err, bytesRead und buffers. bytesRead gibt an, wie viele Bytes aus der Datei gelesen wurden.

Wenn diese Methode als ihre util.promisify()-Version aufgerufen wird, gibt sie ein Promise für ein Object mit den Eigenschaften bytesRead und buffers zurück.

fs.realpath(path[, options], callback)

[History]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v8.0.0Unterstützung für Pipe/Socket-Auflösung wurde hinzugefügt.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v6.4.0Das Aufrufen von realpath funktioniert jetzt wieder für verschiedene Randfälle unter Windows.
v6.0.0Der cache-Parameter wurde entfernt.
v0.1.31Hinzugefügt in: v0.1.31

Berechnet asynchron den kanonischen Pfadnamen durch Auflösen von ., .. und symbolischen Links.

Ein kanonischer Pfadname ist nicht unbedingt eindeutig. Hardlinks und Bind Mounts können eine Datei-System-Entität über viele Pfadnamen verfügbar machen.

Diese Funktion verhält sich wie realpath(3), mit einigen Ausnahmen:

Der callback erhält zwei Argumente (err, resolvedPath). Kann process.cwd verwenden, um relative Pfade aufzulösen.

Nur Pfade, die in UTF8-Strings konvertiert werden können, werden unterstützt.

Das optionale options-Argument kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer encoding-Eigenschaft, die die zu verwendende Zeichencodierung für den an den Callback übergebenen Pfad angibt. Wenn encoding auf 'buffer' gesetzt ist, wird der zurückgegebene Pfad als <Buffer>-Objekt übergeben.

Wenn path zu einer Socket oder einer Pipe auflöst, gibt die Funktion einen system-abhängigen Namen für dieses Objekt zurück.

Ein Pfad, der nicht existiert, führt zu einem ENOENT-Fehler. error.path ist der absolute Dateipfad.

fs.realpath.native(path[, options], callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v9.2.0Hinzugefügt in: v9.2.0

Asynchrones realpath(3).

Das callback erhält zwei Argumente (err, resolvedPath).

Nur Pfade, die in UTF8-Strings konvertiert werden können, werden unterstützt.

Das optionale options-Argument kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer encoding-Eigenschaft, die die zu verwendende Zeichencodierung für den an das Callback übergebenen Pfad angibt. Wenn encoding auf 'buffer' gesetzt ist, wird der zurückgegebene Pfad als <Buffer>-Objekt übergeben.

Unter Linux muss, wenn Node.js gegen musl libc verlinkt ist, das procfs-Dateisystem auf /proc gemountet sein, damit diese Funktion funktioniert. Glibc hat diese Einschränkung nicht.

fs.rename(oldPath, newPath, callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Die Parameter oldPath und newPath können WHATWG URL-Objekte mit dem Protokoll file: sein. Die Unterstützung ist derzeit noch experimentell.
v7.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.0.2Hinzugefügt in: v0.0.2

Benennt asynchron die Datei unter oldPath in den als newPath angegebenen Dateinamen um. Falls newPath bereits existiert, wird sie überschrieben. Wenn sich unter newPath ein Verzeichnis befindet, wird stattdessen ein Fehler ausgelöst. Dem Abschluss-Callback werden keine weiteren Argumente als eine mögliche Ausnahme übergeben.

Siehe auch: rename(2).

js
import { rename } from 'node:fs'

rename('oldFile.txt', 'newFile.txt', err => {
  if (err) throw err
  console.log('Umbenennung abgeschlossen!')
})

fs.rmdir(path[, options], callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v16.0.0Die Verwendung von fs.rmdir(path, { recursive: true }) für einen path, der eine Datei ist, ist nicht mehr zulässig und führt unter Windows zu einem ENOENT-Fehler und unter POSIX zu einem ENOTDIR-Fehler.
v16.0.0Die Verwendung von fs.rmdir(path, { recursive: true }) für einen path, der nicht existiert, ist nicht mehr zulässig und führt zu einem ENOENT-Fehler.
v16.0.0Die Option recursive ist veraltet; ihre Verwendung löst eine Verwarnung aus.
v14.14.0Die Option recursive ist veraltet; verwenden Sie stattdessen fs.rm.
v13.3.0, v12.16.0Die Option maxBusyTries wurde in maxRetries umbenannt, und ihr Standardwert ist 0. Die Option emfileWait wurde entfernt, und EMFILE-Fehler verwenden dieselbe Wiederholungslogik wie andere Fehler. Die Option retryDelay wird jetzt unterstützt. ENFILE-Fehler werden jetzt wiederholt.
v12.10.0Die Optionen recursive, maxBusyTries und emfileWait werden jetzt unterstützt.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Verwarnung mit der ID DEP0013 ausgegeben.
v0.0.2Hinzugefügt in: v0.0.2
  • path <string> | <Buffer> | <URL>

  • options <Object>

    • maxRetries <integer> Wenn ein EBUSY, EMFILE, ENFILE, ENOTEMPTY oder EPERM-Fehler auftritt, wiederholt Node.js den Vorgang mit einer linearen exponentiellen Wartezeit von retryDelay Millisekunden länger bei jedem Versuch. Diese Option gibt die Anzahl der Wiederholungsversuche an. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 0.
    • recursive <boolean> Wenn true, wird ein rekursives Löschen des Verzeichnisses durchgeführt. Im rekursiven Modus werden Operationen bei Fehlern wiederholt. Standard: false. Veraltet.
    • retryDelay <integer> Die Wartezeit in Millisekunden zwischen Wiederholungsversuchen. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 100.
  • callback <Function>

Asynchrones rmdir(2). Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Die Verwendung von fs.rmdir() für eine Datei (kein Verzeichnis) führt unter Windows zu einem ENOENT-Fehler und unter POSIX zu einem ENOTDIR-Fehler.

Um ein ähnliches Verhalten wie der Unix-Befehl rm -rf zu erhalten, verwenden Sie fs.rm() mit den Optionen { recursive: true, force: true }.

fs.rm(path[, options], callback)

[Versionsgeschichte]

VersionÄnderungen
v17.3.0, v16.14.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v14.14.0Hinzugefügt in: v14.14.0
  • path <string> | <Buffer> | <URL>

  • options <Object>

    • force <boolean> Wenn true, werden Ausnahmen ignoriert, wenn path nicht existiert. Standardwert: false.
    • maxRetries <integer> Wenn ein EBUSY, EMFILE, ENFILE, ENOTEMPTY oder EPERM Fehler auftritt, wiederholt Node.js den Vorgang mit einer linearen Backoff-Wartezeit von retryDelay Millisekunden länger bei jedem Versuch. Diese Option gibt die Anzahl der Wiederholungsversuche an. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standardwert: 0.
    • recursive <boolean> Wenn true, wird eine rekursive Entfernung durchgeführt. Im rekursiven Modus werden Operationen bei Fehlern wiederholt. Standardwert: false.
    • retryDelay <integer> Die Wartezeit in Millisekunden zwischen Wiederholungsversuchen. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standardwert: 100.
  • callback <Function>

Entfernt asynchron Dateien und Verzeichnisse (modelliert nach dem Standard-POSIX rm-Dienstprogramm). Dem Abschluss-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

fs.stat(pfad[, optionen], callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.5.0Akzeptiert ein zusätzliches optionen-Objekt, um anzugeben, ob die zurückgegebenen numerischen Werte BigInts sein sollen.
v10.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Der pfad-Parameter kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Der callback-Parameter ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.0.2Hinzugefügt in: v0.0.2

Asynchrones stat(2). Der Callback erhält zwei Argumente (err, stats), wobei stats ein <fs.Stats>-Objekt ist.

Im Fehlerfall ist err.code einer der Häufigen Systemfehler.

fs.stat() folgt symbolischen Links. Verwenden Sie fs.lstat(), um die Links selbst zu betrachten.

Die Verwendung von fs.stat() zum Überprüfen der Existenz einer Datei, bevor fs.open(), fs.readFile() oder fs.writeFile() aufgerufen wird, wird nicht empfohlen. Stattdessen sollte der Benutzercode die Datei direkt öffnen/lesen/schreiben und den Fehler behandeln, der ausgelöst wird, wenn die Datei nicht verfügbar ist.

Um zu überprüfen, ob eine Datei existiert, ohne sie anschließend zu manipulieren, wird fs.access() empfohlen.

Beispielsweise bei folgender Verzeichnisstruktur:

text
- txtDir
-- file.txt
- app.js

Das nächste Programm prüft die Statistiken der angegebenen Pfade:

js
import { stat } from 'node:fs'

const pathsToCheck = ['./txtDir', './txtDir/file.txt']

for (let i = 0; i < pathsToCheck.length; i++) {
  stat(pathsToCheck[i], (err, stats) => {
    console.log(stats.isDirectory())
    console.log(stats)
  })
}

Die resultierende Ausgabe sieht folgendermaßen aus:

bash
true
Stats {
  dev: 16777220,
  mode: 16877,
  nlink: 3,
  uid: 501,
  gid: 20,
  rdev: 0,
  blksize: 4096,
  ino: 14214262,
  size: 96,
  blocks: 0,
  atimeMs: 1561174653071.963,
  mtimeMs: 1561174614583.3518,
  ctimeMs: 1561174626623.5366,
  birthtimeMs: 1561174126937.2893,
  atime: 2019-06-22T03:37:33.072Z,
  mtime: 2019-06-22T03:36:54.583Z,
  ctime: 2019-06-22T03:37:06.624Z,
  birthtime: 2019-06-22T03:28:46.937Z
}
false
Stats {
  dev: 16777220,
  mode: 33188,
  nlink: 1,
  uid: 501,
  gid: 20,
  rdev: 0,
  blksize: 4096,
  ino: 14214074,
  size: 8,
  blocks: 8,
  atimeMs: 1561174616618.8555,
  mtimeMs: 1561174614584,
  ctimeMs: 1561174614583.8145,
  birthtimeMs: 1561174007710.7478,
  atime: 2019-06-22T03:36:56.619Z,
  mtime: 2019-06-22T03:36:54.584Z,
  ctime: 2019-06-22T03:36:54.584Z,
  birthtime: 2019-06-22T03:26:47.711Z
}

fs.statfs(path[, options], callback)

Hinzugefügt in: v19.6.0, v18.15.0

Asynchrones statfs(2). Gibt Informationen über das gemountete Dateisystem zurück, das path enthält. Der Callback erhält zwei Argumente (err, stats), wobei stats ein <fs.StatFs> Objekt ist.

Im Falle eines Fehlers ist err.code einer der Common System Errors.

fs.symlink(target, path[, type], callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v12.0.0Wenn das type-Argument undefiniert bleibt, erkennt Node den target-Typ automatisch und wählt automatisch dir oder file.
v7.6.0Die Parameter target und path können WHATWG URL-Objekte mit dem Protokoll file: sein. Die Unterstützung ist derzeit noch experimentell.
v0.1.31Hinzugefügt in: v0.1.31

Erstellt den Link mit dem Namen path, der auf target verweist. Dem Completion-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

Siehe die POSIX symlink(2) Dokumentation für weitere Details.

Das type-Argument ist nur unter Windows verfügbar und wird auf anderen Plattformen ignoriert. Es kann auf 'dir', 'file' oder 'junction' gesetzt werden. Wenn das type-Argument null ist, erkennt Node.js den target-Typ automatisch und verwendet 'file' oder 'dir'. Wenn das target nicht existiert, wird 'file' verwendet. Windows-Verknüpfungspunkte erfordern, dass der Zielpfad absolut ist. Bei Verwendung von 'junction' wird das target-Argument automatisch auf den absoluten Pfad normalisiert. Verknüpfungspunkte auf NTFS-Volumes können nur auf Verzeichnisse verweisen.

Relative Ziele sind relativ zum übergeordneten Verzeichnis des Links.

js
import { symlink } from 'node:fs'

symlink('./mew', './mewtwo', callback)

Das obige Beispiel erstellt einen symbolischen Link mewtwo, der auf mew im gleichen Verzeichnis verweist:

bash
$ tree .
.
├── mew
└── mewtwo -> ./mew

fs.truncate(path[, len], callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben einer ungültigen Callback-Funktion an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v16.0.0Der zurückgegebene Fehler kann ein AggregateError sein, wenn mehr als ein Fehler zurückgegeben wird.
v10.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.8.6Hinzugefügt in: v0.8.6

Kürzt die Datei. Dem Completion-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben. Ein File Descriptor kann auch als erstes Argument übergeben werden. In diesem Fall wird fs.ftruncate() aufgerufen.

js
import { truncate } from 'node:fs'
// Angenommen, 'path/file.txt' ist eine reguläre Datei.
truncate('path/file.txt', err => {
  if (err) throw err
  console.log('path/file.txt wurde gekürzt')
})
js
const { truncate } = require('node:fs')
// Angenommen, 'path/file.txt' ist eine reguläre Datei.
truncate('path/file.txt', err => {
  if (err) throw err
  console.log('path/file.txt wurde gekürzt')
})

Das Übergeben eines File Descriptors ist veraltet und kann in Zukunft zu einem Fehler führen.

Siehe die POSIX truncate(2) Dokumentation für weitere Details.

fs.unlink(path, callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v0.0.2Hinzugefügt in: v0.0.2

Entfernt asynchron eine Datei oder einen symbolischen Link. Dem Completion-Callback werden keine anderen Argumente als eine mögliche Ausnahme übergeben.

js
import { unlink } from 'node:fs'
// Angenommen, 'path/file.txt' ist eine reguläre Datei.
unlink('path/file.txt', err => {
  if (err) throw err
  console.log('path/file.txt wurde gelöscht')
})

fs.unlink() funktioniert nicht bei einem Verzeichnis, egal ob leer oder nicht. Um ein Verzeichnis zu entfernen, verwenden Sie fs.rmdir().

Weitere Details finden Sie in der POSIX-Dokumentation zu unlink(2).

fs.unwatchFile(filename[, listener])

Hinzugefügt in: v0.1.31

Stoppt die Überwachung von Änderungen an filename. Wenn listener angegeben ist, wird nur dieser bestimmte Listener entfernt. Andernfalls werden alle Listener entfernt, wodurch die Überwachung von filename effektiv beendet wird.

Das Aufrufen von fs.unwatchFile() mit einem Dateinamen, der nicht überwacht wird, ist ein No-Op, kein Fehler.

Die Verwendung von fs.watch() ist effizienter als fs.watchFile() und fs.unwatchFile(). fs.watch() sollte anstelle von fs.watchFile() und fs.unwatchFile() verwendet werden, wenn möglich.

fs.utimes(path, atime, mtime, callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das Argument callback löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v10.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird zur Laufzeit ein TypeError ausgelöst.
v8.0.0NaN, Infinity und -Infinity sind keine gültigen Zeitangaben mehr.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Der Parameter callback ist nicht mehr optional. Wird er nicht übergeben, wird eine Deprecation-Warnung mit der ID DEP0013 ausgegeben.
v4.1.0Numerische Zeichenketten, NaN und Infinity sind nun zulässige Zeitangaben.
v0.4.2Hinzugefügt in: v0.4.2

Ändert die Zeitstempel des Dateisystems des Objekts, auf das path verweist.

Die Argumente atime und mtime folgen diesen Regeln:

  • Werte können entweder Zahlen sein, die die Unix-Epochezeit in Sekunden darstellen, Date-Objekte oder numerische Zeichenketten wie '123456789.0'.
  • Wenn der Wert nicht in eine Zahl konvertiert werden kann oder NaN, Infinity oder -Infinity ist, wird ein Error ausgelöst.

fs.watch(filename[, options][, listener])

[Historie]

VersionÄnderungen
v19.1.0Hinzugefügt: Rekursive Unterstützung für Linux, AIX und IBMi.
v15.9.0, v14.17.0Hinzugefügt: Unterstützung zum Schließen des Watchers mit einem AbortSignal.
v7.6.0Der Parameter filename kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v7.0.0Das übergebene options-Objekt wird niemals modifiziert.
v0.5.10Hinzugefügt in: v0.5.10
  • filename <string> | <Buffer> | <URL>

  • options <string> | <Object>

    • persistent <boolean> Gibt an, ob der Prozess so lange weiterlaufen soll, wie Dateien überwacht werden. Standard: true.
    • recursive <boolean> Gibt an, ob alle Unterverzeichnisse überwacht werden sollen oder nur das aktuelle Verzeichnis. Dies gilt, wenn ein Verzeichnis angegeben ist und nur auf unterstützten Plattformen (siehe Einschränkungen). Standard: false.
    • encoding <string> Gibt die Zeichenkodierung an, die für den an den Listener übergebenen Dateinamen verwendet werden soll. Standard: 'utf8'.
    • signal <AbortSignal> ermöglicht das Schließen des Watchers mit einem AbortSignal.
  • listener <Function> | <undefined> Standard: undefined

  • Gibt zurück: <fs.FSWatcher>

Überwacht Änderungen an filename, wobei filename entweder eine Datei oder ein Verzeichnis ist.

Das zweite Argument ist optional. Wenn options als Zeichenkette angegeben wird, gibt es die encoding an. Andernfalls sollte options als Objekt übergeben werden.

Der Listener-Callback erhält zwei Argumente (eventType, filename). eventType ist entweder 'rename' oder 'change', und filename ist der Name der Datei, die das Ereignis ausgelöst hat.

Auf den meisten Plattformen wird 'rename' immer dann ausgegeben, wenn ein Dateiname im Verzeichnis erscheint oder verschwindet.

Der Listener-Callback ist an das Ereignis 'change' angehängt, das von <fs.FSWatcher> ausgelöst wird, aber es ist nicht dasselbe wie der Wert 'change' von eventType.

Wenn ein signal übergeben wird, wird das Abbrechen des entsprechenden AbortControllers den zurückgegebenen <fs.FSWatcher> schließen.

Einschränkungen

Die fs.watch-API ist nicht zu 100 % plattformübergreifend konsistent und in einigen Situationen nicht verfügbar.

Unter Windows werden keine Ereignisse ausgegeben, wenn das überwachte Verzeichnis verschoben oder umbenannt wird. Ein EPERM-Fehler wird gemeldet, wenn das überwachte Verzeichnis gelöscht wird.

Verfügbarkeit

Diese Funktion hängt davon ab, dass das zugrunde liegende Betriebssystem eine Möglichkeit bietet, über Änderungen im Dateisystem benachrichtigt zu werden.

  • Unter Linux verwendet dies inotify(7).
  • Unter BSD-Systemen verwendet dies kqueue(2).
  • Unter macOS verwendet dies kqueue(2) für Dateien und FSEvents für Verzeichnisse.
  • Unter SunOS-Systemen (einschließlich Solaris und SmartOS) verwendet dies event ports.
  • Unter Windows-Systemen hängt diese Funktion von ReadDirectoryChangesW ab.
  • Unter AIX-Systemen hängt diese Funktion von AHAFS ab, das aktiviert sein muss.
  • Unter IBM i-Systemen wird diese Funktion nicht unterstützt.

Wenn die zugrunde liegende Funktionalität aus irgendeinem Grund nicht verfügbar ist, kann fs.watch() nicht funktionieren und möglicherweise eine Ausnahme auslösen. Beispielsweise kann die Überwachung von Dateien oder Verzeichnissen auf Netzwerkdateisystemen (NFS, SMB usw.) oder Hostdateisystemen bei Verwendung von Virtualisierungssoftware wie Vagrant oder Docker unzuverlässig und in einigen Fällen unmöglich sein.

Es ist immer noch möglich, fs.watchFile() zu verwenden, das Stat-Polling verwendet, aber diese Methode ist langsamer und weniger zuverlässig.

Inodes

Unter Linux und macOS-Systemen löst fs.watch() den Pfad zu einem Inode auf und überwacht den Inode. Wenn der überwachte Pfad gelöscht und neu erstellt wird, wird ihm ein neuer Inode zugewiesen. Die Überwachung gibt ein Ereignis für das Löschen aus, überwacht aber weiterhin den ursprünglichen Inode. Ereignisse für den neuen Inode werden nicht ausgegeben. Dies ist das erwartete Verhalten.

AIX-Dateien behalten den gleichen Inode für die Lebensdauer einer Datei. Das Speichern und Schließen einer überwachten Datei unter AIX führt zu zwei Benachrichtigungen (eine für das Hinzufügen neuer Inhalte und eine für das Kürzen).

Dateiname-Argument

Die Angabe des Arguments filename im Callback wird nur unter Linux, macOS, Windows und AIX unterstützt. Selbst auf unterstützten Plattformen ist nicht immer garantiert, dass filename bereitgestellt wird. Gehen Sie daher nicht davon aus, dass das Argument filename immer im Callback bereitgestellt wird, und implementieren Sie eine Fallback-Logik, falls es null ist.

js
import { watch } from 'node:fs'
watch('somedir', (eventType, filename) => {
  console.log(`Ereignistyp ist: ${eventType}`)
  if (filename) {
    console.log(`Dateiname bereitgestellt: ${filename}`)
  } else {
    console.log('Dateiname nicht bereitgestellt')
  }
})

fs.watchFile(filename[, options], listener)

[Verlauf]

VersionÄnderungen
v10.5.0Die Option bigint wird jetzt unterstützt.
v7.6.0Der Parameter filename kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.1.31Hinzugefügt in: v0.1.31

Beobachtet Änderungen an filename. Der Callback listener wird jedes Mal aufgerufen, wenn auf die Datei zugegriffen wird.

Das Argument options kann weggelassen werden. Falls angegeben, sollte es ein Objekt sein. Das options-Objekt kann einen booleschen Wert namens persistent enthalten, der angibt, ob der Prozess so lange weiterlaufen soll, wie Dateien beobachtet werden. Das options-Objekt kann eine Eigenschaft interval angeben, die festlegt, wie oft das Ziel in Millisekunden abgefragt werden soll.

Der listener erhält zwei Argumente: das aktuelle Stat-Objekt und das vorherige Stat-Objekt:

js
import { watchFile } from 'node:fs'

watchFile('message.text', (curr, prev) => {
  console.log(`die aktuelle mtime ist: ${curr.mtime}`)
  console.log(`die vorherige mtime war: ${prev.mtime}`)
})

Diese Stat-Objekte sind Instanzen von fs.Stat. Wenn die Option bigint auf true gesetzt ist, werden die numerischen Werte in diesen Objekten als BigInts angegeben.

Um benachrichtigt zu werden, wenn die Datei geändert wurde, nicht nur zugegriffen wurde, ist es notwendig, curr.mtimeMs und prev.mtimeMs zu vergleichen.

Wenn eine fs.watchFile-Operation zu einem ENOENT-Fehler führt, wird der Listener einmal aufgerufen, wobei alle Felder auf Null gesetzt sind (oder bei Datumsangaben auf die Unix-Epoche). Wenn die Datei später erstellt wird, wird der Listener erneut mit den neuesten Stat-Objekten aufgerufen. Dies ist eine Änderung der Funktionalität seit v0.10.

Die Verwendung von fs.watch() ist effizienter als fs.watchFile und fs.unwatchFile. fs.watch sollte anstelle von fs.watchFile und fs.unwatchFile verwendet werden, wenn möglich.

Wenn eine von fs.watchFile() beobachtete Datei verschwindet und wieder auftaucht, ist der Inhalt von previous im zweiten Callback-Ereignis (das Wiederauftauchen der Datei) identisch mit dem Inhalt von previous im ersten Callback-Ereignis (ihr Verschwinden).

Dies geschieht, wenn:

  • die Datei gelöscht und anschließend wiederhergestellt wird
  • die Datei umbenannt und dann ein zweites Mal in ihren ursprünglichen Namen umbenannt wird

fs.write(fd, buffer, offset[, length[, position]], callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst nun ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v14.0.0Der buffer-Parameter konvertiert nicht mehr nicht unterstützte Eingaben in Zeichenketten.
v10.10.0Der buffer-Parameter kann nun ein beliebiges TypedArray oder ein DataView sein.
v10.0.0Der callback-Parameter ist nicht mehr optional. Das Weglassen löst zur Laufzeit einen TypeError aus.
v7.4.0Der buffer-Parameter kann nun ein Uint8Array sein.
v7.2.0Die Parameter offset und length sind jetzt optional.
v7.0.0Der callback-Parameter ist nicht mehr optional. Das Weglassen löst eine Deprecation-Warnung mit der ID DEP0013 aus.
v0.0.2Hinzugefügt in: v0.0.2

Schreibt buffer in die durch fd angegebene Datei.

offset bestimmt den zu schreibenden Teil des Puffers, und length ist eine Ganzzahl, die die Anzahl der zu schreibenden Bytes angibt.

position bezieht sich auf den Offset vom Dateianfang, an dem diese Daten geschrieben werden sollen. Wenn typeof position !== 'number', werden die Daten an der aktuellen Position geschrieben. Siehe pwrite(2).

Der Callback erhält drei Argumente (err, bytesWritten, buffer), wobei bytesWritten angibt, wie viele Bytes aus buffer geschrieben wurden.

Wenn diese Methode als ihre util.promisify()-Version aufgerufen wird, gibt sie ein Promise für ein Object mit den Eigenschaften bytesWritten und buffer zurück.

Es ist unsicher, fs.write() mehrmals auf dieselbe Datei aufzurufen, ohne auf den Callback zu warten. Für dieses Szenario wird fs.createWriteStream() empfohlen.

Unter Linux funktionieren positionale Schreibvorgänge nicht, wenn die Datei im Anhängemodus geöffnet wird. Der Kernel ignoriert das Positionsargument und hängt die Daten immer an das Ende der Datei an.

fs.write(fd, buffer[, options], callback)

Hinzugefügt in: v18.3.0, v16.17.0

Schreibt buffer in die durch fd angegebene Datei.

Ähnlich der obigen fs.write-Funktion nimmt diese Version ein optionales options-Objekt entgegen. Wenn kein options-Objekt angegeben wird, werden die oben genannten Werte als Standard verwendet.

fs.write(fd, string[, position[, encoding]], callback)

[Verlauf]

VersionÄnderungen
v19.0.0Das Übergeben eines Objekts mit einer eigenen toString-Funktion an den string-Parameter wird nicht mehr unterstützt.
v17.8.0Das Übergeben eines Objekts mit einer eigenen toString-Funktion an den string-Parameter ist veraltet.
v14.12.0Der string-Parameter wandelt ein Objekt mit einer expliziten toString-Funktion in eine Zeichenkette um.
v14.0.0Der string-Parameter konvertiert ungültige Eingaben nicht mehr in Zeichenketten.
v10.0.0Der callback-Parameter ist nicht mehr optional. Das Weglassen löst zur Laufzeit einen TypeError aus.
v7.2.0Der position-Parameter ist jetzt optional.
v7.0.0Der callback-Parameter ist nicht mehr optional. Das Weglassen löst eine Verwarnung wegen Veralterung mit der ID DEP0013 aus.
v0.11.5Hinzugefügt in: v0.11.5

Schreibt string in die durch fd angegebene Datei. Wenn string keine Zeichenkette ist, wird eine Ausnahme ausgelöst.

position bezieht sich auf den Offset vom Dateianfang, an dem diese Daten geschrieben werden sollen. Wenn typeof position !== 'number', werden die Daten an der aktuellen Position geschrieben. Siehe pwrite(2).

encoding ist die erwartete Zeichenkodierung.

Der Rückruffunktion werden die Argumente (err, written, string) übergeben, wobei written angibt, wie viele Bytes die übergebene Zeichenkette zum Schreiben benötigt hat. Geschriebene Bytes sind nicht unbedingt gleichgeschriebene Zeichen. Siehe Buffer.byteLength.

Es ist unsicher, fs.write() mehrmals auf dieselbe Datei anzuwenden, ohne auf den Rückruf zu warten. Für dieses Szenario wird fs.createWriteStream() empfohlen.

Unter Linux funktionieren positionale Schreibvorgänge nicht, wenn die Datei im Anhängemodus geöffnet wird. Der Kernel ignoriert das Positionsargument und hängt die Daten immer an das Ende der Datei an.

Unter Windows wird eine Zeichenkette mit nicht-ASCII-Zeichen standardmäßig nicht richtig gerendert, wenn der Dateideskriptor mit der Konsole verbunden ist (z. B. fd == 1 oder stdout), unabhängig von der verwendeten Kodierung. Es ist möglich, die Konsole so zu konfigurieren, dass UTF-8 korrekt gerendert wird, indem die aktive Codepage mit dem Befehl chcp 65001 geändert wird. Weitere Informationen finden Sie in der chcp-Dokumentation.

fs.writeFile(file, data[, options], callback)

[Verlauf]

VersionÄnderungen
v21.0.0, v20.10.0Die Option flush wird jetzt unterstützt.
v19.0.0Das Übergeben eines Objekts mit einer eigenen toString-Funktion an den string-Parameter wird nicht mehr unterstützt.
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE statt ERR_INVALID_CALLBACK aus.
v17.8.0Das Übergeben eines Objekts mit einer eigenen toString-Funktion an den string-Parameter ist veraltet.
v16.0.0Der zurückgegebene Fehler kann ein AggregateError sein, wenn mehr als ein Fehler zurückgegeben wird.
v15.2.0, v14.17.0Das options-Argument kann ein AbortSignal enthalten, um eine laufende writeFile-Anforderung abzubrechen.
v14.12.0Der data-Parameter serialisiert ein Objekt mit einer expliziten toString-Funktion.
v14.0.0Der data-Parameter konvertiert nicht mehr nicht unterstützte Eingaben in Strings.
v10.10.0Der data-Parameter kann jetzt jedes TypedArray oder ein DataView sein.
v10.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst zur Laufzeit einen TypeError aus.
v7.4.0Der data-Parameter kann jetzt ein Uint8Array sein.
v7.0.0Der callback-Parameter ist nicht mehr optional. Das Nichtübergeben löst eine Deprecation-Warnung mit der ID DEP0013 aus.
v5.0.0Der file-Parameter kann jetzt ein File Descriptor sein.
v0.1.29Hinzugefügt in: v0.1.29

Wenn file ein Dateiname ist, schreibt asynchron Daten in die Datei und ersetzt die Datei, wenn sie bereits existiert. data kann ein String oder ein Buffer sein.

Wenn file ein File Descriptor ist, ist das Verhalten ähnlich dem direkten Aufruf von fs.write() (was empfohlen wird). Siehe die Hinweise unten zur Verwendung eines File Descriptors.

Die Option encoding wird ignoriert, wenn data ein Buffer ist.

Die Option mode betrifft nur die neu erstellte Datei. Siehe fs.open() für weitere Details.

js
import { writeFile } from 'node:fs'
import { Buffer } from 'node:buffer'

const data = new Uint8Array(Buffer.from('Hello Node.js'))
writeFile('message.txt', data, err => {
  if (err) throw err
  console.log('Die Datei wurde gespeichert!')
})

Wenn options ein String ist, gibt er die Kodierung an:

js
import { writeFile } from 'node:fs'

writeFile('message.txt', 'Hello Node.js', 'utf8', callback)

Es ist unsicher, fs.writeFile() mehrmals auf dieselbe Datei anzuwenden, ohne auf den Callback zu warten. Für dieses Szenario wird fs.createWriteStream() empfohlen.

Ähnlich wie fs.readFile - fs.writeFile ist eine Komfortmethode, die intern mehrere write-Aufrufe durchführt, um den übergebenen Buffer zu schreiben. Für performancekritischen Code sollte fs.createWriteStream() verwendet werden.

Es ist möglich, ein <AbortSignal> zu verwenden, um ein fs.writeFile() abzubrechen. Der Abbruch erfolgt nach bestem Wissen und Gewissen, und es werden wahrscheinlich noch einige Daten geschrieben.

js
import { writeFile } from 'node:fs'
import { Buffer } from 'node:buffer'

const controller = new AbortController()
const { signal } = controller
const data = new Uint8Array(Buffer.from('Hello Node.js'))
writeFile('message.txt', data, { signal }, err => {
  // Wenn eine Anfrage abgebrochen wird, wird der Callback mit einem AbortError aufgerufen
})
// Wenn die Anfrage abgebrochen werden soll
controller.abort()

Das Abbrechen einer laufenden Anfrage bricht nicht einzelne Betriebssystemanfragen ab, sondern das interne Puffern, das fs.writeFile durchführt.

Verwendung von fs.writeFile() mit Filedeskriptoren

Wenn file ein Filedeskriptor ist, ist das Verhalten nahezu identisch mit dem direkten Aufruf von fs.write(), wie folgt:

js
import { write } from 'node:fs'
import { Buffer } from 'node:buffer'

write(fd, Buffer.from(data, options.encoding), callback)

Der Unterschied zum direkten Aufruf von fs.write() besteht darin, dass fs.write() unter ungewöhnlichen Bedingungen möglicherweise nur einen Teil des Puffers schreibt und wiederholt aufgerufen werden muss, um die restlichen Daten zu schreiben, während fs.writeFile() so lange wiederholt wird, bis die Daten vollständig geschrieben wurden (oder ein Fehler auftritt).

Die Auswirkungen dieser Unterschiede sind eine häufige Quelle für Verwirrung. Im Fall des Filedeskriptors wird die Datei nicht ersetzt! Die Daten werden nicht unbedingt am Anfang der Datei geschrieben, und die ursprünglichen Daten der Datei können vor und/oder nach den neu geschriebenen Daten verbleiben.

Wenn beispielsweise fs.writeFile() zweimal hintereinander aufgerufen wird, zuerst um die Zeichenkette 'Hello' zu schreiben und dann um die Zeichenkette ', World' zu schreiben, würde die Datei 'Hello, World' enthalten und möglicherweise einige der ursprünglichen Daten der Datei (abhängig von der Größe der ursprünglichen Datei und der Position des Filedeskriptors). Wäre stattdessen ein Dateiname anstelle eines Deskriptors verwendet worden, würde die Datei garantiert nur ', World' enthalten.

fs.writev(fd, buffers[, position], callback)

[Historie]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v12.9.0Hinzugefügt in: v12.9.0

Schreibt ein Array von ArrayBufferViews in die durch fd angegebene Datei mit writev().

position ist der Offset vom Anfang der Datei, an dem diese Daten geschrieben werden sollen. Wenn typeof position !== 'number', werden die Daten an der aktuellen Position geschrieben.

Der Callback erhält drei Argumente: err, bytesWritten und buffers. bytesWritten gibt an, wie viele Bytes aus buffers geschrieben wurden.

Wenn diese Methode mit util.promisify() verwendet wird, gibt sie ein Promise für ein Object mit den Eigenschaften bytesWritten und buffers zurück.

Es ist unsicher, fs.writev() mehrmals auf dieselbe Datei anzuwenden, ohne auf den Callback zu warten. Verwenden Sie in diesem Szenario fs.createWriteStream().

Unter Linux funktionieren positionale Schreibvorgänge nicht, wenn die Datei im Anhangsmodus geöffnet wird. Der Kernel ignoriert das Positionsargument und hängt die Daten immer an das Ende der Datei an.

Synchrone API

Die synchronen APIs führen alle Operationen synchron aus und blockieren die Ereignisschleife, bis die Operation abgeschlossen oder fehlgeschlagen ist.

fs.accessSync(path[, mode])

[Verlauf]

VersionÄnderungen
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.11.15Hinzugefügt in: v0.11.15

Testet synchron die Berechtigungen eines Benutzers für die Datei oder das Verzeichnis, die durch path angegeben ist. Das Argument mode ist eine optionale Ganzzahl, die die durchzuführenden Zugriffsprüfungen angibt. mode sollte entweder der Wert fs.constants.F_OK oder eine Maske sein, die aus dem bitweisen ODER von fs.constants.R_OK, fs.constants.W_OK und fs.constants.X_OK besteht (z. B. fs.constants.W_OK | fs.constants.R_OK). Überprüfen Sie Dateizugriffskonstanten für mögliche Werte von mode.

Wenn eine der Zugriffsprüfungen fehlschlägt, wird ein Error ausgelöst. Andernfalls gibt die Methode undefined zurück.

js
import { accessSync, constants } from 'node:fs'

try {
  accessSync('etc/passwd', constants.R_OK | constants.W_OK)
  console.log('Lese-/Schreibzugriff möglich')
} catch (err) {
  console.error('Kein Zugriff!')
}

fs.appendFileSync(path, data[, options])

[Verlauf]

VersionÄnderungen
v21.1.0, v20.10.0Die Option flush wird jetzt unterstützt.
v7.0.0Das übergebene options-Objekt wird niemals verändert.
v5.0.0Der Parameter file kann jetzt ein File Descriptor sein.
v0.6.7Hinzugefügt in: v0.6.7

Fügt synchron Daten an eine Datei an und erstellt die Datei, wenn sie noch nicht existiert. data kann eine Zeichenkette oder ein <Buffer> sein.

Die Option mode wirkt sich nur auf die neu erstellte Datei aus. Weitere Informationen finden Sie unter fs.open().

js
import { appendFileSync } from 'node:fs'

try {
  appendFileSync('message.txt', 'anzuhängende Daten')
  console.log('Die "anzuhängende Daten" wurden an die Datei angehängt!')
} catch (err) {
  /* Fehlerbehandlung */
}

Wenn options eine Zeichenkette ist, gibt diese die Kodierung an:

js
import { appendFileSync } from 'node:fs'

appendFileSync('message.txt', 'anzuhängende Daten', 'utf8')

Der path kann als numerischer File Descriptor angegeben werden, der zum Anhängen geöffnet wurde (mit fs.open() oder fs.openSync()). Der File Descriptor wird nicht automatisch geschlossen.

js
import { openSync, closeSync, appendFileSync } from 'node:fs'

let fd

try {
  fd = openSync('message.txt', 'a')
  appendFileSync(fd, 'anzuhängende Daten', 'utf8')
} catch (err) {
  /* Fehlerbehandlung */
} finally {
  if (fd !== undefined) closeSync(fd)
}

fs.chmodSync(path, mode)

[Verlauf]

VersionÄnderungen
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.6.7Hinzugefügt in: v0.6.7

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.chmod().

Weitere Details finden Sie in der POSIX chmod(2) Dokumentation.

fs.chownSync(path, uid, gid)

[Verlauf]

VersionÄnderungen
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.1.97Hinzugefügt in: v0.1.97

Ändert synchron den Besitzer und die Gruppe einer Datei. Gibt undefined zurück. Dies ist die synchrone Version von fs.chown().

Weitere Details finden Sie in der POSIX chown(2) Dokumentation.

fs.closeSync(fd)

Hinzugefügt in: v0.1.21

Schließt den Datei-Descriptor. Gibt undefined zurück.

Das Aufrufen von fs.closeSync() auf einen beliebigen Datei-Descriptor (fd), der derzeit über eine andere fs-Operation verwendet wird, kann zu undefiniertem Verhalten führen.

Weitere Details finden Sie in der POSIX close(2) Dokumentation.

fs.copyFileSync(src, dest[, mode])

[Verlauf]

VersionÄnderungen
v14.0.0Argument flags wurde in mode geändert und eine strengere Typvalidierung eingeführt.
v8.5.0Hinzugefügt in: v8.5.0

Kopiert src synchron nach dest. Standardmäßig wird dest überschrieben, falls es bereits existiert. Gibt undefined zurück. Node.js gibt keine Garantie für die Atomizität des Kopiervorgangs. Falls ein Fehler auftritt, nachdem die Zieldatei zum Schreiben geöffnet wurde, versucht Node.js, die Zieldatei zu entfernen.

mode ist eine optionale Ganzzahl, die das Verhalten des Kopiervorgangs angibt. Es ist möglich, eine Maske zu erstellen, die aus dem bitweisen ODER von zwei oder mehr Werten besteht (z. B. fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE).

  • fs.constants.COPYFILE_EXCL: Der Kopiervorgang schlägt fehl, wenn dest bereits existiert.
  • fs.constants.COPYFILE_FICLONE: Der Kopiervorgang versucht, einen Copy-on-Write-Reflink zu erstellen. Wenn die Plattform Copy-on-Write nicht unterstützt, wird ein Fallback-Kopiermechanismus verwendet.
  • fs.constants.COPYFILE_FICLONE_FORCE: Der Kopiervorgang versucht, einen Copy-on-Write-Reflink zu erstellen. Wenn die Plattform Copy-on-Write nicht unterstützt, schlägt der Vorgang fehl.
js
import { copyFileSync, constants } from 'node:fs'

// destination.txt wird standardmäßig erstellt oder überschrieben.
copyFileSync('source.txt', 'destination.txt')
console.log('source.txt wurde nach destination.txt kopiert')

// Mit COPYFILE_EXCL schlägt der Vorgang fehl, wenn destination.txt existiert.
copyFileSync('source.txt', 'destination.txt', constants.COPYFILE_EXCL)

fs.cpSync(src, dest[, options])

[Verlauf]

VersionÄnderungen
v22.3.0Diese API ist nicht mehr experimentell.
v20.1.0, v18.17.0Akzeptiert eine zusätzliche mode-Option, um das Kopierverhalten als mode-Argument von fs.copyFile() anzugeben.
v17.6.0, v16.15.0Akzeptiert eine zusätzliche verbatimSymlinks-Option, um anzugeben, ob die Pfadauflösung für symbolische Links durchgeführt werden soll.
v16.7.0Hinzugefügt in: v16.7.0
  • src <string> | <URL> Quellpfad zum Kopieren.

  • dest <string> | <URL> Zielpfad zum Kopieren.

  • options <Object>

    • dereference <boolean> Symbolische Links auflösen. Standard: false.

    • errorOnExist <boolean> Wenn force false ist und das Ziel existiert, wird ein Fehler ausgegeben. Standard: false.

    • filter <Function> Funktion zum Filtern kopierter Dateien/Verzeichnisse. Gibt true zurück, um das Element zu kopieren, false, um es zu ignorieren. Beim Ignorieren eines Verzeichnisses werden auch alle seine Inhalte übersprungen. Standard: undefined

    • src <string> Quellpfad zum Kopieren.

    • dest <string> Zielpfad zum Kopieren.

    • Rückgabewert: <boolean> Jeder Nicht-Promise-Wert, der in boolean umgewandelt werden kann.

    • force <boolean> Bestehende Datei oder Verzeichnis überschreiben. Der Kopiervorgang ignoriert Fehler, wenn Sie dies auf false setzen und das Ziel existiert. Verwenden Sie die Option errorOnExist, um dieses Verhalten zu ändern. Standard: true.

    • mode <integer> Modifikatoren für den Kopiervorgang. Standard: 0. Siehe mode-Flag von fs.copyFileSync().

    • preserveTimestamps <boolean> Wenn true, werden Zeitstempel von src beibehalten. Standard: false.

    • recursive <boolean> Verzeichnisse rekursiv kopieren. Standard: false

    • verbatimSymlinks <boolean> Wenn true, wird die Pfadauflösung für symbolische Links übersprungen. Standard: false

Kopiert die gesamte Verzeichnisstruktur synchron von src nach dest, einschließlich Unterverzeichnisse und Dateien.

Beim Kopieren eines Verzeichnisses in ein anderes Verzeichnis werden keine Globs unterstützt, und das Verhalten ähnelt cp dir1/ dir2/.

fs.existsSync(path)

[Historie]

VersionÄnderungen
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.1.21Hinzugefügt in: v0.1.21

Gibt true zurück, wenn der Pfad existiert, andernfalls false.

Für detaillierte Informationen siehe die Dokumentation der asynchronen Version dieser API: fs.exists().

fs.exists() ist veraltet, fs.existsSync() jedoch nicht. Der Parameter callback von fs.exists() akzeptiert Parameter, die mit anderen Node.js-Callbacks inkonsistent sind. fs.existsSync() verwendet keinen Callback.

js
import { existsSync } from 'node:fs'

if (existsSync('/etc/passwd')) console.log('Der Pfad existiert.')

fs.fchmodSync(fd, mode)

Hinzugefügt in: v0.4.7

Setzt die Berechtigungen der Datei. Gibt undefined zurück.

Siehe die POSIX fchmod(2) Dokumentation für weitere Details.

fs.fchownSync(fd, uid, gid)

Hinzugefügt in: v0.4.7

Setzt den Besitzer der Datei. Gibt undefined zurück.

Siehe die POSIX fchown(2) Dokumentation für weitere Details.

fs.fdatasyncSync(fd)

Hinzugefügt in: v0.1.96

Zwingt alle aktuell gepufferten E/A-Operationen, die mit der Datei verbunden sind, in den synchronisierten E/A-Abschlusszustand des Betriebssystems. Einzelheiten finden Sie in der POSIX fdatasync(2) Dokumentation. Gibt undefined zurück.

fs.fstatSync(fd[, options])

[Verlauf]

VersionÄnderungen
v10.5.0Akzeptiert ein zusätzliches options-Objekt, um anzugeben, ob die zurückgegebenen numerischen Werte bigint sein sollen.
v0.1.95Hinzugefügt in: v0.1.95

Ruft die <fs.Stats> für den Datei-Deskriptor ab.

Siehe die POSIX fstat(2) Dokumentation für weitere Details.

fs.fsyncSync(fd)

Hinzugefügt in: v0.1.96

Fordert an, dass alle Daten für den geöffneten Datei-Deskriptor auf das Speichergerät geschrieben werden. Die spezifische Implementierung ist betriebssystem- und gerätespezifisch. Weitere Einzelheiten finden Sie in der POSIX fsync(2) Dokumentation. Gibt undefined zurück.

fs.ftruncateSync(fd[, len])

Hinzugefügt in: v0.8.6

Stutzt den Datei-Deskriptor. Gibt undefined zurück.

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.ftruncate().

fs.futimesSync(fd, atime, mtime)

[Versionsgeschichte]

VersionÄnderungen
v4.1.0Numerische Zeichenketten, NaN und Infinity sind jetzt zulässige Zeitangaben.
v0.4.2Hinzugefügt in: v0.4.2

Synchrone Version von fs.futimes(). Gibt undefined zurück.

fs.globSync(pattern[, options])

[Versionsgeschichte]

VersionÄnderungen
v22.2.0Unterstützung für withFileTypes als Option hinzugefügt.
v22.0.0Hinzugefügt in: v22.0.0

[Stabil: 1 - Experimentell]

Stabil: 1 Stabilität: 1 - Experimentell

  • pattern <string> | <string[]>

  • options <Object>

    • cwd <string> aktuelles Arbeitsverzeichnis. Standard: process.cwd()
    • exclude <Function> Funktion zum Herausfiltern von Dateien/Verzeichnissen. Gibt true zurück, um das Element auszuschließen, false, um es einzuschließen. Standard: undefined.
    • withFileTypes <boolean> true, wenn der Glob Pfade als Dirents zurückgeben soll, andernfalls false. Standard: false.
  • Rückgabewert: <string[]> Pfade der Dateien, die dem Muster entsprechen.

js
import { globSync } from 'node:fs'

console.log(globSync('**/*.js'))
js
const { globSync } = require('node:fs')

console.log(globSync('**/*.js'))

fs.lchmodSync(path, mode)

Seit v0.4.7 veraltet

Ändert die Berechtigungen eines symbolischen Links. Gibt undefined zurück.

Diese Methode ist nur unter macOS implementiert.

Siehe die POSIX lchmod(2) Dokumentation für weitere Details.

fs.lchownSync(path, uid, gid)

[Verlauf]

VersionÄnderungen
v10.6.0Diese API ist nicht mehr veraltet.
v0.4.7Nur Dokumentations-Veralterung.

Setzt den Besitzer für den Pfad. Gibt undefined zurück.

Siehe die POSIX lchown(2) Dokumentation für weitere Details.

fs.lutimesSync(path, atime, mtime)

Hinzugefügt in: v14.5.0, v12.19.0

Ändert die Zeitstempel des Dateisystems des symbolischen Links, auf den path verweist. Gibt undefined zurück oder löst eine Ausnahme aus, wenn Parameter falsch sind oder der Vorgang fehlschlägt. Dies ist die synchrone Version von fs.lutimes().

fs.linkSync(existingPath, newPath)

[Verlauf]

VersionÄnderungen
v7.6.0Die Parameter existingPath und newPath können WHATWG URL-Objekte mit dem Protokoll file: sein. Die Unterstützung ist derzeit noch experimentell.
v0.1.31Hinzugefügt in: v0.1.31

Erstellt einen neuen Link von existingPath zu newPath. Siehe die POSIX link(2) Dokumentation für weitere Details. Gibt undefined zurück.

fs.lstatSync(path[, options])

[Verlauf]

VersionÄnderungen
v15.3.0, v14.17.0Akzeptiert eine throwIfNoEntry-Option, um anzugeben, ob eine Ausnahme ausgelöst werden soll, wenn der Eintrag nicht existiert.
v10.5.0Akzeptiert ein zusätzliches options-Objekt, um anzugeben, ob die zurückgegebenen numerischen Werte bigint sein sollen.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.1.30Hinzugefügt in: v0.1.30
  • path <string> | <Buffer> | <URL>

  • options <Object>

    • bigint <boolean> Ob die numerischen Werte im zurückgegebenen <fs.Stats>-Objekt bigint sein sollen. Standard: false.
    • throwIfNoEntry <boolean> Ob eine Ausnahme ausgelöst wird, wenn kein Dateisystemeintrag existiert, anstatt undefined zurückzugeben. Standard: true.
  • Rückgabewert: <fs.Stats>

Ruft die <fs.Stats> für den symbolischen Link ab, auf den sich path bezieht.

Siehe die POSIX lstat(2) Dokumentation für weitere Details.

fs.mkdirSync(pfad[, optionen])

[Verlauf]

VersionÄnderungen
v13.11.0, v12.17.0Im recursive-Modus wird jetzt der zuerst erstellte Pfad zurückgegeben.
v10.12.0Das zweite Argument kann jetzt ein optionen-Objekt mit den Eigenschaften recursive und mode sein.
v7.6.0Der pfad-Parameter kann ein WHATWG URL-Objekt mit dem file:-Protokoll sein.
v0.1.21Hinzugefügt in: v0.1.21

Erstellt synchron ein Verzeichnis. Gibt undefined zurück, oder, wenn recursive true ist, den zuerst erstellten Verzeichnispfad. Dies ist die synchrone Version von fs.mkdir().

Siehe die POSIX mkdir(2) Dokumentation für weitere Details.

fs.mkdtempSync(präfix[, optionen])

[Verlauf]

VersionÄnderungen
v20.6.0, v18.19.0Der präfix-Parameter akzeptiert jetzt Buffer und URLs.
v16.5.0, v14.18.0Der präfix-Parameter akzeptiert jetzt einen leeren String.
v5.10.0Hinzugefügt in: v5.10.0

Gibt den Pfad des erstellten Verzeichnisses zurück.

Für detaillierte Informationen siehe die Dokumentation der asynchronen Version dieser API: fs.mkdtemp().

Das optionale optionen-Argument kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer encoding-Eigenschaft, die die zu verwendende Zeichencodierung angibt.

fs.opendirSync(path[, options])

[History]

VersionÄnderungen
v20.1.0, v18.17.0Option recursive hinzugefügt.
v13.1.0, v12.16.0Die Option bufferSize wurde eingeführt.
v12.12.0Hinzugefügt in: v12.12.0
  • path <string> | <Buffer> | <URL>

  • options <Object>

    • encoding <string> | <null> Standard: 'utf8'
    • bufferSize <number> Anzahl der Verzeichniseinträge, die intern beim Lesen aus dem Verzeichnis gepuffert werden. Höhere Werte führen zu besserer Leistung, aber höherem Speicherverbrauch. Standard: 32
    • recursive <boolean> Standard: false
  • Rückgabewert: <fs.Dir>

Öffnet ein Verzeichnis synchron. Siehe opendir(3).

Erstellt ein <fs.Dir>, das alle weiteren Funktionen zum Lesen aus und Bereinigen des Verzeichnisses enthält.

Die Option encoding legt die Codierung für den path beim Öffnen des Verzeichnisses und bei nachfolgenden Leseoperationen fest.

fs.openSync(path[, flags[, mode]])

[History]

VersionÄnderungen
v11.1.0Das Argument flags ist jetzt optional und standardmäßig 'r'.
v9.9.0Die Flags as und as+ werden jetzt unterstützt.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.1.21Hinzugefügt in: v0.1.21

Gibt eine ganze Zahl zurück, die den Dateideskriptor darstellt.

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.open().

fs.readdirSync(path[, options])

[Verlauf]

VersionÄnderungen
v20.1.0, v18.17.0Option recursive hinzugefügt.
v10.10.0Neue Option withFileTypes hinzugefügt.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem file:-Protokoll sein.
v0.1.21Hinzugefügt in: v0.1.21

Liest den Inhalt des Verzeichnisses.

Siehe die POSIX readdir(3) Dokumentation für weitere Details.

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer encoding-Eigenschaft, die die zu verwendende Zeichencodierung für die zurückgegebenen Dateinamen angibt. Wenn encoding auf 'buffer' gesetzt ist, werden die zurückgegebenen Dateinamen als <Buffer> Objekte übergeben.

Wenn options.withFileTypes auf true gesetzt ist, enthält das Ergebnis <fs.Dirent> Objekte.

fs.readFileSync(path[, options])

[Versionsgeschichte]

VersionÄnderungen
v7.6.0Der Parameter path kann nun ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v5.0.0Der Parameter path kann nun ein Dateideskriptor sein.
v0.1.8Hinzugefügt in: v0.1.8

Gibt den Inhalt von path zurück.

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.readFile().

Wenn die Option encoding angegeben ist, gibt diese Funktion eine Zeichenkette zurück. Andernfalls wird ein Puffer zurückgegeben.

Ähnlich wie bei fs.readFile() ist das Verhalten von fs.readFileSync(), wenn der Pfad ein Verzeichnis ist, plattformabhängig.

js
import { readFileSync } from 'node:fs'

// macOS, Linux und Windows
readFileSync('<directory>')
// => [Error: EISDIR: ungültige Operation auf einem Verzeichnis, lesen <directory>]

// FreeBSD
readFileSync('<directory>') // => <data>

fs.readlinkSync(path[, options])

[History]

VersionÄnderungen
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.1.31Hinzugefügt in: v0.1.31

Gibt den Zeichenkettenwert des symbolischen Links zurück.

Weitere Details finden Sie in der POSIX-Dokumentation zu readlink(2).

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer Eigenschaft encoding, die die zu verwendende Zeichencodierung für den zurückgegebenen Linkpfad angibt. Wenn encoding auf 'buffer' gesetzt ist, wird der zurückgegebene Linkpfad als <Buffer>-Objekt übergeben.

fs.readSync(fd, buffer, offset, length[, position])

[History]

VersionÄnderungen
v10.10.0Der Parameter buffer kann jetzt ein beliebiges TypedArray oder ein DataView sein.
v6.0.0Der Parameter length kann jetzt 0 sein.
v0.1.21Hinzugefügt in: v0.1.21

Gibt die Anzahl der bytesRead zurück.

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.read().

fs.readSync(fd, buffer[, options])

[Verlauf]

VersionÄnderungen
v13.13.0, v12.17.0Es kann ein Options-Objekt übergeben werden, um offset, length und position optional zu machen.
v13.13.0, v12.17.0Hinzugefügt in: v13.13.0, v12.17.0

Gibt die Anzahl der bytesRead zurück.

Ähnlich der obigen fs.readSync-Funktion nimmt diese Version ein optionales options-Objekt entgegen. Wenn kein options-Objekt angegeben wird, werden die oben genannten Werte als Standard verwendet.

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.read().

fs.readvSync(fd, buffers[, position])

Hinzugefügt in: v13.13.0, v12.17.0

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.readv().

fs.realpathSync(path[, options])

[Versionsgeschichte]

VersionÄnderungen
v8.0.0Unterstützung für Pipe/Socket-Auflösung hinzugefügt.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v6.4.0realpathSync funktioniert jetzt wieder in verschiedenen Randfällen unter Windows.
v6.0.0Der Parameter cache wurde entfernt.
v0.1.31Hinzugefügt in: v0.1.31

Gibt den aufgelösten Pfadnamen zurück.

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.realpath().

fs.realpathSync.native(path[, options])

Hinzugefügt in: v9.2.0

Synchrones realpath(3).

Es werden nur Pfade unterstützt, die in UTF8-Strings konvertiert werden können.

Das optionale Argument options kann eine Zeichenkette sein, die eine Codierung angibt, oder ein Objekt mit einer Eigenschaft encoding, die die zu verwendende Zeichencodierung für den zurückgegebenen Pfad angibt. Wenn encoding auf 'buffer' gesetzt ist, wird der zurückgegebene Pfad als <Buffer>-Objekt übergeben.

Unter Linux muss, wenn Node.js mit musl libc verknüpft ist, das procfs-Dateisystem unter /proc eingehängt sein, damit diese Funktion funktioniert. Glibc hat diese Einschränkung nicht.

fs.renameSync(oldPath, newPath)

[Verlauf]

VersionÄnderungen
v7.6.0Die Parameter oldPath und newPath können WHATWG URL-Objekte mit dem Protokoll file: sein. Die Unterstützung ist derzeit noch experimentell.
v0.1.21Hinzugefügt in: v0.1.21

Benennt die Datei von oldPath in newPath um. Gibt undefined zurück.

Siehe die POSIX rename(2) Dokumentation für weitere Details.

fs.rmdirSync(path[, options])

[Verlauf]

VersionÄnderungen
v16.0.0Die Verwendung von fs.rmdirSync(path, { recursive: true }) für einen path, der eine Datei ist, ist nicht mehr zulässig und führt unter Windows zu einem ENOENT-Fehler und unter POSIX zu einem ENOTDIR-Fehler.
v16.0.0Die Verwendung von fs.rmdirSync(path, { recursive: true }) für einen path, der nicht existiert, ist nicht mehr zulässig und führt zu einem ENOENT-Fehler.
v16.0.0Die Option recursive ist veraltet; ihre Verwendung löst eine Veraltungswarnung aus.
v14.14.0Die Option recursive ist veraltet; verwenden Sie stattdessen fs.rmSync.
v13.3.0, v12.16.0Die Option maxBusyTries wurde in maxRetries umbenannt, und ihr Standardwert ist 0. Die Option emfileWait wurde entfernt, und EMFILE-Fehler verwenden dieselbe Wiederholungslogik wie andere Fehler. Die Option retryDelay wird jetzt unterstützt. ENFILE-Fehler werden jetzt wiederholt.
v12.10.0Die Optionen recursive, maxBusyTries und emfileWait werden jetzt unterstützt.
v7.6.0Der path-Parameter kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.1.21Hinzugefügt in: v0.1.21
  • path <string> | <Buffer> | <URL>
  • options <Object>
    • maxRetries <integer> Wenn ein EBUSY, EMFILE, ENFILE, ENOTEMPTY oder EPERM Fehler auftritt, wiederholt Node.js den Vorgang mit einer linearen Backoff-Wartezeit von retryDelay Millisekunden länger bei jedem Versuch. Diese Option gibt die Anzahl der Wiederholungsversuche an. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 0.
    • recursive <boolean> Wenn true, wird eine rekursive Verzeichnisentfernung durchgeführt. Im rekursiven Modus werden Operationen bei Fehlern wiederholt. Standard: false. Veraltet.
    • retryDelay <integer> Die Wartezeit in Millisekunden zwischen Wiederholungsversuchen. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 100.

Synchrone rmdir(2). Gibt undefined zurück.

Die Verwendung von fs.rmdirSync() auf einer Datei (kein Verzeichnis) führt unter Windows zu einem ENOENT-Fehler und unter POSIX zu einem ENOTDIR-Fehler.

Um ein ähnliches Verhalten wie der Unix-Befehl rm -rf zu erhalten, verwenden Sie fs.rmSync() mit den Optionen { recursive: true, force: true }.

fs.rmSync(path[, options])

[Verlauf]

VersionÄnderungen
v17.3.0, v16.14.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v14.14.0Hinzugefügt in: v14.14.0
  • path <string> | <Buffer> | <URL>
  • options <Object>
    • force <boolean> Wenn true, werden Ausnahmen ignoriert, wenn path nicht existiert. Standard: false.
    • maxRetries <integer> Wenn ein EBUSY, EMFILE, ENFILE, ENOTEMPTY oder EPERM Fehler auftritt, wiederholt Node.js den Vorgang mit einer linearen Backoff-Wartezeit von retryDelay Millisekunden länger bei jedem Versuch. Diese Option gibt die Anzahl der Wiederholungsversuche an. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 0.
    • recursive <boolean> Wenn true, wird eine rekursive Verzeichnisentfernung durchgeführt. Im rekursiven Modus werden Operationen bei Fehlern wiederholt. Standard: false.
    • retryDelay <integer> Die Wartezeit in Millisekunden zwischen Wiederholungsversuchen. Diese Option wird ignoriert, wenn die Option recursive nicht true ist. Standard: 100.

Synchron entfernt Dateien und Verzeichnisse (modelliert nach dem Standard-POSIX rm-Dienstprogramm). Gibt undefined zurück.

fs.statSync(path[, options])

[Verlauf]

VersionÄnderungen
v15.3.0, v14.17.0Akzeptiert eine throwIfNoEntry-Option, um anzugeben, ob eine Ausnahme ausgelöst werden soll, wenn der Eintrag nicht existiert.
v10.5.0Akzeptiert ein zusätzliches options-Objekt, um anzugeben, ob die zurückgegebenen numerischen Werte bigint sein sollen.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.1.21Hinzugefügt in: v0.1.21
  • path <string> | <Buffer> | <URL>

  • options <Object>

    • bigint <boolean> Ob die numerischen Werte im zurückgegebenen <fs.Stats>-Objekt bigint sein sollen. Standard: false.
    • throwIfNoEntry <boolean> Ob eine Ausnahme ausgelöst wird, wenn kein Dateisystemeintrag existiert, anstatt undefined zurückzugeben. Standard: true.
  • Rückgabewert: <fs.Stats>

Ruft die <fs.Stats> für den Pfad ab.

fs.statfsSync(path[, options])

Hinzugefügt in: v19.6.0, v18.15.0

Synchrone statfs(2). Gibt Informationen über das gemountete Dateisystem zurück, das path enthält.

Im Fehlerfall ist err.code einer der Common System Errors.

fs.symlinkSync(target, path[, type])

[Verlauf]

VersionÄnderungen
v12.0.0Wenn das Argument type undefiniert bleibt, erkennt Node den target-Typ automatisch und wählt automatisch dir oder file.
v7.6.0Die Parameter target und path können WHATWG URL-Objekte mit dem Protokoll file: sein. Die Unterstützung ist derzeit noch experimentell.
v0.1.31Hinzugefügt in: v0.1.31

Gibt undefined zurück.

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.symlink().

fs.truncateSync(path[, len])

Hinzugefügt in: v0.8.6

Kürzt die Datei. Gibt undefined zurück. Ein File Descriptor kann auch als erstes Argument übergeben werden. In diesem Fall wird fs.ftruncateSync() aufgerufen.

Die Übergabe eines File Descriptors ist veraltet und kann in Zukunft zu einem Fehler führen.

fs.unlinkSync(path)

[Verlauf]

VersionÄnderungen
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v0.1.21Hinzugefügt in: v0.1.21

Synchrones unlink(2). Gibt undefined zurück.

fs.utimesSync(path, atime, mtime)

[Verlauf]

VersionÄnderungen
v8.0.0NaN, Infinity und -Infinity sind keine gültigen Zeitangaben mehr.
v7.6.0Der Parameter path kann ein WHATWG URL-Objekt mit dem Protokoll file: sein.
v4.1.0Numerische Zeichenketten, NaN und Infinity sind jetzt zulässige Zeitangaben.
v0.4.2Hinzugefügt in: v0.4.2

Gibt undefined zurück.

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.utimes().

fs.writeFileSync(file, data[, options])

[Verlauf]

VersionÄnderungen
v21.0.0, v20.10.0Die Option flush wird jetzt unterstützt.
v19.0.0Das Übergeben eines Objekts mit einer eigenen toString-Funktion an den Parameter data wird nicht mehr unterstützt.
v17.8.0Das Übergeben eines Objekts mit einer eigenen toString-Funktion an den Parameter data ist veraltet.
v14.12.0Der Parameter data serialisiert ein Objekt mit einer expliziten toString-Funktion.
v14.0.0Der Parameter data konvertiert ungültige Eingaben nicht mehr in Strings.
v10.10.0Der Parameter data kann nun ein beliebiger TypedArray oder ein DataView sein.
v7.4.0Der Parameter data kann nun ein Uint8Array sein.
v5.0.0Der Parameter file kann nun ein File Descriptor sein.
v0.1.29Hinzugefügt in: v0.1.29

Gibt undefined zurück.

Die Option mode wirkt sich nur auf die neu erstellte Datei aus. Weitere Details finden Sie unter fs.open().

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.writeFile().

fs.writeSync(fd, buffer, offset[, length[, position]])

[Verlauf]

VersionÄnderungen
v14.0.0Der Parameter buffer konvertiert nicht mehr nicht unterstützte Eingaben in Zeichenketten.
v10.10.0Der Parameter buffer kann nun ein beliebiges TypedArray oder ein DataView sein.
v7.4.0Der Parameter buffer kann nun ein Uint8Array sein.
v7.2.0Die Parameter offset und length sind nun optional.
v0.1.21Hinzugefügt in: v0.1.21

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.write(fd, buffer...).

fs.writeSync(fd, buffer[, options])

Hinzugefügt in: v18.3.0, v16.17.0

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.write(fd, buffer...).

fs.writeSync(fd, string[, position[, encoding]])

[Versionsverlauf]

VersionÄnderungen
v14.0.0Der Parameter string konvertiert nicht mehr nicht unterstützte Eingaben in Strings.
v7.2.0Der Parameter position ist jetzt optional.
v0.11.5Hinzugefügt in: v0.11.5

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.write(fd, string...).

fs.writevSync(fd, buffers[, position])

Hinzugefügt in: v12.9.0

Ausführliche Informationen finden Sie in der Dokumentation der asynchronen Version dieser API: fs.writev().

Gemeinsame Objekte

Die gemeinsamen Objekte werden von allen Varianten der Dateisystem-API (Promise, Callback und synchron) gemeinsam genutzt.

Klasse: fs.Dir

Hinzugefügt in: v12.12.0

Eine Klasse, die einen Verzeichnisstrom darstellt.

Erstellt von fs.opendir(), fs.opendirSync() oder fsPromises.opendir().

js
import { opendir } from 'node:fs/promises'

try {
  const dir = await opendir('./')
  for await (const dirent of dir) console.log(dirent.name)
} catch (err) {
  console.error(err)
}

Bei Verwendung des asynchronen Iterators wird das <fs.Dir>-Objekt automatisch geschlossen, nachdem der Iterator beendet wurde.

dir.close()

Hinzugefügt in: v12.12.0

Schließt asynchron den zugrundeliegenden Ressourcen-Handle des Verzeichnisses. Nachfolgende Lesevorgänge führen zu Fehlern.

Es wird ein Promise zurückgegeben, das erfüllt wird, nachdem die Ressource geschlossen wurde.

dir.close(callback)

[Verlauf]

VersionÄnderungen
v18.0.0Das Übergeben eines ungültigen Callbacks an das callback-Argument löst jetzt ERR_INVALID_ARG_TYPE anstelle von ERR_INVALID_CALLBACK aus.
v12.12.0Hinzugefügt in: v12.12.0

Schließt asynchron den zugrundeliegenden Ressourcen-Handle des Verzeichnisses. Nachfolgende Lesevorgänge führen zu Fehlern.

Der callback wird aufgerufen, nachdem der Ressourcen-Handle geschlossen wurde.

dir.closeSync()

Hinzugefügt in: v12.12.0

Schließt synchron den zugrundeliegenden Ressourcen-Handle des Verzeichnisses. Nachfolgende Lesevorgänge führen zu Fehlern.

dir.path

Hinzugefügt in: v12.12.0

Der schreibgeschützte Pfad dieses Verzeichnisses, wie er an fs.opendir(), fs.opendirSync() oder fsPromises.opendir() übergeben wurde.

dir.read()

Hinzugefügt in: v12.12.0

Liest asynchron den nächsten Verzeichniseintrag über readdir(3) als <fs.Dirent>.

Ein Promise wird zurückgegeben, das mit einem <fs.Dirent> erfüllt wird, oder mit null, wenn keine weiteren Verzeichniseinträge zum Lesen vorhanden sind.

Verzeichniseinträge, die von dieser Funktion zurückgegeben werden, sind in keiner bestimmten Reihenfolge, wie sie von den zugrunde liegenden Verzeichnismechanismen des Betriebssystems bereitgestellt werden. Einträge, die während der Iteration über das Verzeichnis hinzugefügt oder entfernt werden, sind möglicherweise nicht in den Iterationsergebnissen enthalten.

dir.read(callback)

Hinzugefügt in: v12.12.0

Liest asynchron den nächsten Verzeichniseintrag über readdir(3) als <fs.Dirent>.

Nach Abschluss des Lesevorgangs wird der callback mit einem <fs.Dirent> oder null aufgerufen, wenn keine weiteren Verzeichniseinträge zum Lesen vorhanden sind.

Verzeichniseinträge, die von dieser Funktion zurückgegeben werden, sind in keiner bestimmten Reihenfolge, wie sie von den zugrunde liegenden Verzeichnismechanismen des Betriebssystems bereitgestellt werden. Einträge, die während der Iteration über das Verzeichnis hinzugefügt oder entfernt werden, sind möglicherweise nicht in den Iterationsergebnissen enthalten.

dir.readSync()

Hinzugefügt in: v12.12.0

Liest synchron den nächsten Verzeichniseintrag als <fs.Dirent>. Weitere Informationen finden Sie in der POSIX readdir(3) Dokumentation.

Wenn keine weiteren Verzeichniseinträge zum Lesen vorhanden sind, wird null zurückgegeben.

Verzeichniseinträge, die von dieser Funktion zurückgegeben werden, sind in keiner bestimmten Reihenfolge, wie sie von den zugrunde liegenden Verzeichnismechanismen des Betriebssystems bereitgestellt werden. Einträge, die während der Iteration über das Verzeichnis hinzugefügt oder entfernt werden, sind möglicherweise nicht in den Iterationsergebnissen enthalten.

dir[Symbol.asyncIterator]()

Hinzugefügt in: v12.12.0

Iteriert asynchron über das Verzeichnis, bis alle Einträge gelesen wurden. Weitere Details finden Sie in der POSIX readdir(3) Dokumentation.

Die vom asynchronen Iterator zurückgegebenen Einträge sind immer ein <fs.Dirent>. Der null-Fall von dir.read() wird intern behandelt.

Siehe <fs.Dir> für ein Beispiel.

Verzeichniseinträge, die von diesem Iterator zurückgegeben werden, befinden sich in keiner bestimmten Reihenfolge, wie sie von den zugrunde liegenden Verzeichnismechanismen des Betriebssystems bereitgestellt werden. Während der Iteration über das Verzeichnis hinzugefügte oder entfernte Einträge sind möglicherweise nicht in den Iterationsergebnissen enthalten.

Klasse: fs.Dirent

Hinzugefügt in: v10.10.0

Eine Darstellung eines Verzeichniseintrags, der eine Datei oder ein Unterverzeichnis innerhalb des Verzeichnisses sein kann, wie er durch das Lesen aus einem <fs.Dir> zurückgegeben wird. Der Verzeichniseintrag ist eine Kombination aus Dateinamen und Dateityp-Paaren.

Zusätzlich, wenn fs.readdir() oder fs.readdirSync() mit der Option withFileTypes auf true gesetzt aufgerufen wird, wird das resultierende Array mit <fs.Dirent> Objekten anstatt Strings oder <Buffer>s gefüllt.

dirent.isBlockDevice()

Hinzugefügt in: v10.10.0

Gibt true zurück, wenn das <fs.Dirent> Objekt ein Blockgerät beschreibt.

dirent.isCharacterDevice()

Hinzugefügt in: v10.10.0

Gibt true zurück, wenn das <fs.Dirent> Objekt ein Zeichengerät beschreibt.

dirent.isDirectory()

Hinzugefügt in: v10.10.0

Gibt true zurück, wenn das <fs.Dirent>-Objekt ein Verzeichnis des Dateisystems beschreibt.

dirent.isFIFO()

Hinzugefügt in: v10.10.0

Gibt true zurück, wenn das <fs.Dirent>-Objekt eine First-In-First-Out (FIFO)-Pipe beschreibt.

dirent.isFile()

Hinzugefügt in: v10.10.0

Gibt true zurück, wenn das <fs.Dirent>-Objekt eine reguläre Datei beschreibt.

dirent.isSocket()

Hinzugefügt in: v10.10.0

Gibt true zurück, wenn das <fs.Dirent>-Objekt einen Socket beschreibt.

Hinzugefügt in: v10.10.0

Gibt true zurück, wenn das <fs.Dirent>-Objekt einen symbolischen Link beschreibt.

dirent.name

Hinzugefügt in: v10.10.0

Der Dateiname, auf den sich dieses <fs.Dirent>-Objekt bezieht. Der Typ dieses Werts wird durch options.encoding bestimmt, der an fs.readdir() oder fs.readdirSync() übergeben wird.

dirent.parentPath

Hinzugefügt in: v21.4.0, v20.12.0, v18.20.0

[Stabil: 1 - Experimentell]

Stabil: 1 Stabilität: 1 - Experimentell

Der Pfad zum übergeordneten Verzeichnis der Datei, auf die sich dieses <fs.Dirent>-Objekt bezieht.

dirent.path

[Verlauf]

VersionÄnderungen
v23.2.0Die Eigenschaft ist nicht mehr schreibgeschützt.
v23.0.0Der Zugriff auf diese Eigenschaft löst eine Warnung aus. Sie ist jetzt schreibgeschützt.
v21.5.0, v20.12.0, v18.20.0Veraltet seit: v21.5.0, v20.12.0, v18.20.0
v20.1.0, v18.17.0Hinzugefügt in: v20.1.0, v18.17.0

[Stabil: 0 - Veraltet]

Stabil: 0 Stabilität: 0 - Veraltet: Verwenden Sie stattdessen dirent.parentPath.

Alias für dirent.parentPath.

Klasse: fs.FSWatcher

Hinzugefügt in: v0.5.8

Ein erfolgreicher Aufruf der Methode fs.watch() gibt ein neues <fs.FSWatcher>-Objekt zurück.

Alle <fs.FSWatcher>-Objekte emittieren ein 'change'-Ereignis, wenn eine bestimmte überwachte Datei geändert wird.

Ereignis: 'change'

Hinzugefügt in: v0.5.8

  • eventType <string> Der Typ des aufgetretenen Änderungsereignisses
  • filename <string> | <Buffer> Der geänderte Dateiname (falls relevant/verfügbar)

Wird ausgegeben, wenn sich etwas in einem überwachten Verzeichnis oder einer Datei ändert. Weitere Details finden Sie in fs.watch().

Das Argument filename wird möglicherweise nicht bereitgestellt, abhängig von der Unterstützung des Betriebssystems. Wenn filename bereitgestellt wird, wird es als <Buffer> bereitgestellt, wenn fs.watch() mit seiner encoding-Option auf 'buffer' aufgerufen wird, andernfalls ist filename eine UTF-8-Zeichenkette.

js
import { watch } from 'node:fs'
// Beispiel bei der Behandlung über den fs.watch()-Listener
watch('./tmp', { encoding: 'buffer' }, (eventType, filename) => {
  if (filename) {
    console.log(filename)
    // Gibt aus: <Buffer ...>
  }
})

Ereignis: 'close'

Hinzugefügt in: v10.0.0

Wird ausgegeben, wenn der Watcher aufhört, auf Änderungen zu überwachen. Das geschlossene <fs.FSWatcher>-Objekt kann im Ereignishandler nicht mehr verwendet werden.

Ereignis: 'error'

Hinzugefügt in: v0.5.8

Wird ausgegeben, wenn während der Überwachung der Datei ein Fehler auftritt. Das fehlerhafte <fs.FSWatcher>-Objekt kann im Ereignishandler nicht mehr verwendet werden.

watcher.close()

Hinzugefügt in: v0.5.8

Stoppt die Überwachung auf Änderungen an dem gegebenen <fs.FSWatcher>. Nach dem Stoppen kann das <fs.FSWatcher>-Objekt nicht mehr verwendet werden.

watcher.ref()

Hinzugefügt in: v14.3.0, v12.20.0

Fordert beim Aufruf an, dass die Node.js-Ereignisschleife nicht beendet wird, solange der <fs.FSWatcher> aktiv ist. Mehrfaches Aufrufen von watcher.ref() hat keine Auswirkung.

Standardmäßig sind alle <fs.FSWatcher>-Objekte "referenziert", wodurch ein Aufruf von watcher.ref() normalerweise nicht notwendig ist, es sei denn, watcher.unref() wurde zuvor aufgerufen.

watcher.unref()

Hinzugefügt in: v14.3.0, v12.20.0

Beim Aufruf benötigt das aktive <fs.FSWatcher>-Objekt nicht, dass die Node.js-Ereignisschleife aktiv bleibt. Wenn keine andere Aktivität die Ereignisschleife am Laufen hält, kann der Prozess beendet werden, bevor der Rückruf des <fs.FSWatcher>-Objekts aufgerufen wird. Mehrfaches Aufrufen von watcher.unref() hat keine Auswirkung.

Klasse: fs.StatWatcher

Hinzugefügt in: v14.3.0, v12.20.0

Ein erfolgreicher Aufruf der Methode fs.watchFile() gibt ein neues <fs.StatWatcher>-Objekt zurück.

watcher.ref()

Hinzugefügt in: v14.3.0, v12.20.0

Fordert beim Aufruf an, dass die Node.js-Ereignisschleife nicht beendet wird, solange der <fs.StatWatcher> aktiv ist. Mehrfaches Aufrufen von watcher.ref() hat keine Auswirkung.

Standardmäßig sind alle <fs.StatWatcher>-Objekte "referenziert", wodurch ein Aufruf von watcher.ref() normalerweise nicht notwendig ist, es sei denn, watcher.unref() wurde zuvor aufgerufen.

watcher.unref()

Hinzugefügt in: v14.3.0, v12.20.0

Wenn aufgerufen, benötigt das aktive <fs.StatWatcher>-Objekt nicht, dass die Node.js-Ereignisschleife aktiv bleibt. Wenn keine andere Aktivität die Ereignisschleife am Laufen hält, kann der Prozess beendet werden, bevor der Rückruf des <fs.StatWatcher>-Objekts aufgerufen wird. Mehrmaliges Aufrufen von watcher.unref() hat keine Auswirkung.

Klasse: fs.ReadStream

Hinzugefügt in: v0.1.93

Instanzen von <fs.ReadStream> werden mit der Funktion fs.createReadStream() erstellt und zurückgegeben.

Ereignis: 'close'

Hinzugefügt in: v0.1.93

Wird ausgegeben, wenn der zugrunde liegende Datei-Descriptor des <fs.ReadStream> geschlossen wurde.

Ereignis: 'open'

Hinzugefügt in: v0.1.93

Wird ausgegeben, wenn der Datei-Descriptor des <fs.ReadStream> geöffnet wurde.

Ereignis: 'ready'

Hinzugefügt in: v9.11.0

Wird ausgegeben, wenn der <fs.ReadStream> einsatzbereit ist.

Wird unmittelbar nach 'open' ausgelöst.

readStream.bytesRead

Hinzugefügt in: v6.4.0

Die Anzahl der bisher gelesenen Bytes.

readStream.path

Hinzugefügt in: v0.1.93

Der Pfad zu der Datei, aus der der Stream liest, wie im ersten Argument von fs.createReadStream() angegeben. Wenn path als Zeichenkette übergeben wird, ist readStream.path eine Zeichenkette. Wenn path als <Buffer> übergeben wird, ist readStream.path ein <Buffer>. Wenn fd angegeben ist, ist readStream.path undefined.

readStream.pending

Hinzugefügt in: v11.2.0, v10.16.0

Diese Eigenschaft ist true, wenn die zugrunde liegende Datei noch nicht geöffnet wurde, d. h. bevor das Ereignis 'ready' emittiert wird.

Klasse: fs.Stats

[Verlauf]

VersionÄnderungen
v22.0.0, v20.13.0Öffentlicher Konstruktor ist veraltet.
v8.1.0Zeiten als Zahlen hinzugefügt.
v0.1.21Hinzugefügt in: v0.1.21

Ein <fs.Stats>-Objekt liefert Informationen über eine Datei.

Objekte, die von fs.stat(), fs.lstat(), fs.fstat() und ihren synchronen Gegenstücken zurückgegeben werden, sind von diesem Typ. Wenn bigint in den an diese Methoden übergebenen options true ist, sind die numerischen Werte bigint anstelle von number, und das Objekt enthält zusätzliche Eigenschaften mit Nanosekunden-Genauigkeit, die mit Ns angehängt sind. Stat-Objekte dürfen nicht direkt mit dem Schlüsselwort new erstellt werden.

bash
Stats {
  dev: 2114,
  ino: 48064969,
  mode: 33188,
  nlink: 1,
  uid: 85,
  gid: 100,
  rdev: 0,
  size: 527,
  blksize: 4096,
  blocks: 8,
  atimeMs: 1318289051000.1,
  mtimeMs: 1318289051000.1,
  ctimeMs: 1318289051000.1,
  birthtimeMs: 1318289051000.1,
  atime: Mon, 10 Oct 2011 23:24:11 GMT,
  mtime: Mon, 10 Oct 2011 23:24:11 GMT,
  ctime: Mon, 10 Oct 2011 23:24:11 GMT,
  birthtime: Mon, 10 Oct 2011 23:24:11 GMT }

bigint-Version:

bash
BigIntStats {
  dev: 2114n,
  ino: 48064969n,
  mode: 33188n,
  nlink: 1n,
  uid: 85n,
  gid: 100n,
  rdev: 0n,
  size: 527n,
  blksize: 4096n,
  blocks: 8n,
  atimeMs: 1318289051000n,
  mtimeMs: 1318289051000n,
  ctimeMs: 1318289051000n,
  birthtimeMs: 1318289051000n,
  atimeNs: 1318289051000000000n,
  mtimeNs: 1318289051000000000n,
  ctimeNs: 1318289051000000000n,
  birthtimeNs: 1318289051000000000n,
  atime: Mon, 10 Oct 2011 23:24:11 GMT,
  mtime: Mon, 10 Oct 2011 23:24:11 GMT,
  ctime: Mon, 10 Oct 2011 23:24:11 GMT,
  birthtime: Mon, 10 Oct 2011 23:24:11 GMT }

stats.isBlockDevice()

Hinzugefügt in: v0.1.10

Gibt true zurück, wenn das <fs.Stats>-Objekt ein Blockgerät beschreibt.

stats.isCharacterDevice()

Hinzugefügt in: v0.1.10

Gibt true zurück, wenn das <fs.Stats>-Objekt ein Zeichengerät beschreibt.

stats.isDirectory()

Hinzugefügt in: v0.1.10

Gibt true zurück, wenn das <fs.Stats>-Objekt ein Dateisystemverzeichnis beschreibt.

Wenn das <fs.Stats>-Objekt durch Aufruf von fs.lstat() auf einen symbolischen Link erhalten wurde, der auf ein Verzeichnis verweist, gibt diese Methode false zurück. Dies liegt daran, dass fs.lstat() Informationen über den symbolischen Link selbst und nicht den Pfad, auf den er verweist, zurückgibt.

stats.isFIFO()

Hinzugefügt in: v0.1.10

Gibt true zurück, wenn das <fs.Stats>-Objekt eine First-In-First-Out (FIFO)-Pipe beschreibt.

stats.isFile()

Hinzugefügt in: v0.1.10

Gibt true zurück, wenn das <fs.Stats>-Objekt eine reguläre Datei beschreibt.

stats.isSocket()

Hinzugefügt in: v0.1.10

Gibt true zurück, wenn das <fs.Stats>-Objekt einen Socket beschreibt.

Hinzugefügt in: v0.1.10

Gibt true zurück, wenn das <fs.Stats>-Objekt einen symbolischen Link beschreibt.

Diese Methode ist nur gültig, wenn fs.lstat() verwendet wird.

stats.dev

Die numerische Kennung des Geräts, das die Datei enthält.

stats.ino

Die dateisystemspezifische „Inode“-Nummer für die Datei.

stats.mode

Ein Bitfeld, das den Dateityp und den Modus beschreibt.

Die Anzahl der Hardlinks, die für die Datei existieren.

stats.uid

Die numerische Benutzerkennung des Benutzers, dem die Datei gehört (POSIX).

stats.gid

Die numerische Gruppenkennung der Gruppe, der die Datei gehört (POSIX).

stats.rdev

Eine numerische Gerätekennung, wenn die Datei ein Gerät darstellt.

stats.size

Die Größe der Datei in Bytes.

Wenn das zugrunde liegende Dateisystem die Abfrage der Dateigröße nicht unterstützt, ist dies 0.

stats.blksize

Die Blockgröße des Dateisystems für E/A-Operationen.

stats.blocks

Die Anzahl der für diese Datei zugewiesenen Blöcke.

stats.atimeMs

Hinzugefügt in: v8.1.0

Der Zeitstempel, der den Zeitpunkt des letzten Zugriffs auf diese Datei angibt, ausgedrückt in Millisekunden seit der POSIX-Epoche.

stats.mtimeMs

Hinzugefügt in: v8.1.0

Der Zeitstempel, der den Zeitpunkt der letzten Änderung dieser Datei angibt, ausgedrückt in Millisekunden seit der POSIX-Epoche.

stats.ctimeMs

Hinzugefügt in: v8.1.0

Der Zeitstempel, der den Zeitpunkt der letzten Änderung des Dateistatus angibt, ausgedrückt in Millisekunden seit der POSIX-Epoche.

stats.birthtimeMs

Hinzugefügt in: v8.1.0

Der Zeitstempel, der den Erstellungszeitpunkt dieser Datei angibt, ausgedrückt in Millisekunden seit der POSIX-Epoche.

stats.atimeNs

Hinzugefügt in: v12.10.0

Nur vorhanden, wenn bigint: true an die Methode übergeben wird, die das Objekt erzeugt. Der Zeitstempel, der den Zeitpunkt des letzten Zugriffs auf diese Datei angibt, ausgedrückt in Nanosekunden seit der POSIX-Epoche.

stats.mtimeNs

Hinzugefügt in: v12.10.0

Nur vorhanden, wenn bigint: true an die Methode übergeben wird, die das Objekt erzeugt. Der Zeitstempel, der die letzte Änderung dieser Datei in Nanosekunden seit der POSIX-Epoche angibt.

stats.ctimeNs

Hinzugefügt in: v12.10.0

Nur vorhanden, wenn bigint: true an die Methode übergeben wird, die das Objekt erzeugt. Der Zeitstempel, der die letzte Änderung des Dateistatus in Nanosekunden seit der POSIX-Epoche angibt.

stats.birthtimeNs

Hinzugefügt in: v12.10.0

Nur vorhanden, wenn bigint: true an die Methode übergeben wird, die das Objekt erzeugt. Der Zeitstempel, der den Erstellungszeitpunkt dieser Datei in Nanosekunden seit der POSIX-Epoche angibt.

stats.atime

Hinzugefügt in: v0.11.13

Der Zeitstempel, der den Zeitpunkt des letzten Zugriffs auf diese Datei angibt.

stats.mtime

Hinzugefügt in: v0.11.13

Der Zeitstempel, der den Zeitpunkt der letzten Änderung dieser Datei angibt.

stats.ctime

Hinzugefügt in: v0.11.13

Der Zeitstempel, der den Zeitpunkt der letzten Änderung des Dateistatus angibt.

stats.birthtime

Hinzugefügt in: v0.11.13

Der Zeitstempel, der den Erstellungszeitpunkt dieser Datei angibt.

Stat-Zeitwerte

Die Eigenschaften atimeMs, mtimeMs, ctimeMs, birthtimeMs sind numerische Werte, die die entsprechenden Zeiten in Millisekunden enthalten. Ihre Genauigkeit ist plattformspezifisch. Wenn bigint: true an die Methode übergeben wird, die das Objekt erzeugt, sind die Eigenschaften BigInts, andernfalls sind sie Zahlen.

Die Eigenschaften atimeNs, mtimeNs, ctimeNs, birthtimeNs sind BigInts, die die entsprechenden Zeiten in Nanosekunden enthalten. Sie sind nur vorhanden, wenn bigint: true an die Methode übergeben wird, die das Objekt erzeugt. Ihre Genauigkeit ist plattformspezifisch.

atime, mtime, ctime und birthtime sind alternative Darstellungen der verschiedenen Zeiten als Date-Objekt. Die Date- und Zahlenwerte sind nicht miteinander verbunden. Das Zuweisen eines neuen Zahlenwerts oder das Ändern des Date-Werts wird sich nicht in der entsprechenden alternativen Darstellung widerspiegeln.

Die Zeiten im stat-Objekt haben die folgende Semantik:

  • atime "Zugriffszeit": Zeitpunkt des letzten Zugriffs auf die Datei. Geändert durch die Systemaufrufe mknod(2), utimes(2) und read(2).
  • mtime "Änderungszeit": Zeitpunkt der letzten Änderung der Datei. Geändert durch die Systemaufrufe mknod(2), utimes(2) und write(2).
  • ctime "Änderungszeitpunkt": Zeitpunkt der letzten Änderung des Dateistatus (Änderung der Inode-Daten). Geändert durch die Systemaufrufe chmod(2), chown(2), link(2), mknod(2), rename(2), unlink(2), utimes(2), read(2) und write(2).
  • birthtime "Erstellungszeit": Zeitpunkt der Dateierstellung. Wird einmalig bei der Dateierstellung gesetzt. Auf Dateisystemen, auf denen birthtime nicht verfügbar ist, kann dieses Feld stattdessen entweder ctime oder 1970-01-01T00:00Z (d. h. Unix-Epoch-Zeitstempel 0) enthalten. Dieser Wert kann in diesem Fall größer als atime oder mtime sein. Unter Darwin und anderen FreeBSD-Varianten wird er auch gesetzt, wenn die atime mithilfe des Systemaufrufs utimes(2) explizit auf einen früheren Wert als die aktuelle birthtime gesetzt wird.

Vor Node.js 0.12 enthielt ctime unter Windows-Systemen die birthtime. Ab 0.12 ist ctime keine "Erstellungszeit", und unter Unix-Systemen war sie es auch nie.

Klasse: fs.StatFs

Hinzugefügt in: v19.6.0, v18.15.0

Liefert Informationen über ein gemountetes Dateisystem.

Objekte, die von fs.statfs() und seinem synchronen Gegenstück zurückgegeben werden, sind von diesem Typ. Wenn bigint in den an diese Methoden übergebenen options true ist, sind die numerischen Werte bigint anstelle von number.

bash
StatFs {
  type: 1397114950,
  bsize: 4096,
  blocks: 121938943,
  bfree: 61058895,
  bavail: 61058895,
  files: 999,
  ffree: 1000000
}

bigint Version:

bash
StatFs {
  type: 1397114950n,
  bsize: 4096n,
  blocks: 121938943n,
  bfree: 61058895n,
  bavail: 61058895n,
  files: 999n,
  ffree: 1000000n
}

statfs.bavail

Hinzugefügt in: v19.6.0, v18.15.0

Freie Blöcke, die für nicht privilegierte Benutzer verfügbar sind.

statfs.bfree

Hinzugefügt in: v19.6.0, v18.15.0

Freie Blöcke im Dateisystem.

statfs.blocks

Hinzugefügt in: v19.6.0, v18.15.0

Gesamtanzahl der Datenblöcke im Dateisystem.

statfs.bsize

Hinzugefügt in: v19.6.0, v18.15.0

Optimale Blockgröße für die Datenübertragung.

statfs.ffree

Hinzugefügt in: v19.6.0, v18.15.0

Freie Datei-Nodes im Dateisystem.

statfs.files

Hinzugefügt in: v19.6.0, v18.15.0

Gesamtanzahl der Dateiknoten im Dateisystem.

statfs.type

Hinzugefügt in: v19.6.0, v18.15.0

Dateisystemtyp.

Klasse: fs.WriteStream

Hinzugefügt in: v0.1.93

Instanzen von <fs.WriteStream> werden mit der Funktion fs.createWriteStream() erstellt und zurückgegeben.

Ereignis: 'close'

Hinzugefügt in: v0.1.93

Wird ausgelöst, wenn der zugrunde liegende Dateideskriptor des <fs.WriteStream> geschlossen wurde.

Ereignis: 'open'

Hinzugefügt in: v0.1.93

Wird ausgelöst, wenn die Datei des <fs.WriteStream> geöffnet wird.

Ereignis: 'ready'

Hinzugefügt in: v9.11.0

Wird ausgelöst, wenn der <fs.WriteStream> einsatzbereit ist.

Wird unmittelbar nach 'open' ausgelöst.

writeStream.bytesWritten

Hinzugefügt in: v0.4.7

Die Anzahl der bisher geschriebenen Bytes. Enthält keine Daten, die noch zum Schreiben in der Warteschlange stehen.

writeStream.close([callback])

Hinzugefügt in: v0.9.4

Schließt writeStream. Optional wird ein Callback akzeptiert, der ausgeführt wird, sobald writeStream geschlossen ist.

writeStream.path

Hinzugefügt in: v0.1.93

Der Pfad zur Datei, in die der Stream schreibt, wie im ersten Argument von fs.createWriteStream() angegeben. Wenn path als Zeichenkette übergeben wird, ist writeStream.path eine Zeichenkette. Wenn path als <Buffer> übergeben wird, ist writeStream.path ein <Buffer>.

writeStream.pending

Hinzugefügt in: v11.2.0

Diese Eigenschaft ist true, wenn die zugrunde liegende Datei noch nicht geöffnet wurde, d. h. bevor das Ereignis 'ready' emittiert wird.

fs.constants

Gibt ein Objekt zurück, das häufig verwendete Konstanten für Dateisystemoperationen enthält.

FS-Konstanten

Die folgenden Konstanten werden von fs.constants und fsPromises.constants exportiert.

Nicht jede Konstante ist auf jedem Betriebssystem verfügbar; dies ist besonders wichtig für Windows, wo viele der POSIX-spezifischen Definitionen nicht verfügbar sind. Für portable Anwendungen wird empfohlen, vor der Verwendung deren Vorhandensein zu überprüfen.

Um mehr als eine Konstante zu verwenden, verwenden Sie den bitweisen OR-Operator |.

Beispiel:

js
import { open, constants } from 'node:fs'

const { O_RDWR, O_CREAT, O_EXCL } = constants

open('/path/to/my/file', O_RDWR | O_CREAT | O_EXCL, (err, fd) => {
  // ...
})
Dateizugriffskonstanten

Die folgenden Konstanten sind für die Verwendung als mode-Parameter gedacht, der an fsPromises.access(), fs.access() und fs.accessSync() übergeben wird.

KonstanteBeschreibung
F_OKFlag, das angibt, dass die Datei für den aufrufenden Prozess sichtbar ist. Dies ist nützlich, um festzustellen, ob eine Datei existiert, sagt aber nichts über rwx-Berechtigungen aus. Standardwert, wenn kein Modus angegeben ist.
R_OKFlag, das angibt, dass die Datei vom aufrufenden Prozess gelesen werden kann.
W_OKFlag, das angibt, dass die Datei vom aufrufenden Prozess geschrieben werden kann.
X_OKFlag, das angibt, dass die Datei vom aufrufenden Prozess ausgeführt werden kann. Dies hat keine Auswirkung auf Windows (verhält sich wie fs.constants.F_OK).

Die Definitionen sind auch unter Windows verfügbar.

Dateikonstanten kopieren

Die folgenden Konstanten sind für die Verwendung mit fs.copyFile() vorgesehen.

KonstanteBeschreibung
COPYFILE_EXCLWenn vorhanden, schlägt der Kopiervorgang mit einem Fehler fehl, wenn der Zielpfad bereits existiert.
COPYFILE_FICLONEWenn vorhanden, versucht der Kopiervorgang, einen Copy-on-Write-Reflink zu erstellen. Wenn die zugrundeliegende Plattform Copy-on-Write nicht unterstützt, wird ein Fallback-Kopiermechanismus verwendet.
COPYFILE_FICLONE_FORCEWenn vorhanden, versucht der Kopiervorgang, einen Copy-on-Write-Reflink zu erstellen. Wenn die zugrundeliegende Plattform Copy-on-Write nicht unterstützt, schlägt der Vorgang mit einem Fehler fehl.

Die Definitionen sind auch unter Windows verfügbar.

Dateioffen-Konstanten

Die folgenden Konstanten sind für die Verwendung mit fs.open() vorgesehen.

KonstanteBeschreibung
O_RDONLYFlag, das angibt, eine Datei für schreibgeschützten Zugriff zu öffnen.
O_WRONLYFlag, das angibt, eine Datei für schreibgeschützten Zugriff zu öffnen.
O_RDWRFlag, das angibt, eine Datei für Lese- und Schreibzugriff zu öffnen.
O_CREATFlag, das angibt, die Datei zu erstellen, wenn sie noch nicht existiert.
O_EXCLFlag, das angibt, dass das Öffnen einer Datei fehlschlagen soll, wenn das Flag O_CREAT gesetzt ist und die Datei bereits existiert.
O_NOCTTYFlag, das angibt, dass wenn der Pfad ein Terminalgerät identifiziert, das Öffnen des Pfads nicht dazu führen soll, dass dieses Terminal zum Steuerterminal für den Prozess wird (wenn der Prozess noch kein solches besitzt).
O_TRUNCFlag, das angibt, dass wenn die Datei existiert und eine reguläre Datei ist und die Datei erfolgreich für den Schreibzugriff geöffnet wird, ihre Länge auf null gekürzt wird.
O_APPENDFlag, das angibt, dass Daten an das Ende der Datei angehängt werden.
O_DIRECTORYFlag, das angibt, dass das Öffnen fehlschlagen soll, wenn der Pfad kein Verzeichnis ist.
O_NOATIMEFlag, das angibt, dass Lesezugriffe auf das Dateisystem nicht mehr zu einer Aktualisierung der atime-Informationen führen, die der Datei zugeordnet sind. Dieses Flag ist nur auf Linux-Betriebssystemen verfügbar.
O_NOFOLLOWFlag, das angibt, dass das Öffnen fehlschlagen soll, wenn der Pfad ein symbolischer Link ist.
O_SYNCFlag, das angibt, dass die Datei für synchronisierte E/A geöffnet wird, wobei Schreibvorgänge auf die Dateiintegrität warten.
O_DSYNCFlag, das angibt, dass die Datei für synchronisierte E/A geöffnet wird, wobei Schreibvorgänge auf die Datenintegrität warten.
O_SYMLINKFlag, das angibt, den symbolischen Link selbst zu öffnen, anstatt die Ressource, auf die er verweist.
O_DIRECTWenn gesetzt, wird versucht, die Cache-Effekte der Datei-E/A zu minimieren.
O_NONBLOCKFlag, das angibt, die Datei nach Möglichkeit im nicht blockierenden Modus zu öffnen.
UV_FS_O_FILEMAPWenn gesetzt, wird eine Dateizuordnung im Speicher verwendet, um auf die Datei zuzugreifen. Dieses Flag ist nur auf Windows-Betriebssystemen verfügbar. Auf anderen Betriebssystemen wird dieses Flag ignoriert.

Unter Windows sind nur O_APPEND, O_CREAT, O_EXCL, O_RDONLY, O_RDWR, O_TRUNC, O_WRONLY und UV_FS_O_FILEMAP verfügbar.

Dateityp-Konstanten

Die folgenden Konstanten sind für die Verwendung mit der mode-Eigenschaft des Objekts <fs.Stats> zur Bestimmung des Dateityps vorgesehen.

KonstanteBeschreibung
S_IFMTBitmaske zur Extraktion des Dateitypcodes.
S_IFREGDateityp-Konstante für eine reguläre Datei.
S_IFDIRDateityp-Konstante für ein Verzeichnis.
S_IFCHRDateityp-Konstante für eine zeichenorientierte Gerätedatei.
S_IFBLKDateityp-Konstante für eine blockorientierte Gerätedatei.
S_IFIFODateityp-Konstante für ein FIFO/Pipe.
S_IFLNKDateityp-Konstante für einen symbolischen Link.
S_IFSOCKDateityp-Konstante für einen Socket.

Unter Windows sind nur S_IFCHR, S_IFDIR, S_IFLNK, S_IFMT und S_IFREG verfügbar.

Datei-Modus-Konstanten

Die folgenden Konstanten sind für die Verwendung mit der mode-Eigenschaft des Objekts <fs.Stats> zur Bestimmung der Zugriffsberechtigungen für eine Datei vorgesehen.

KonstanteBeschreibung
S_IRWXUDateimodus, der angibt, dass der Besitzer lesen, schreiben und ausführen kann.
S_IRUSRDateimodus, der angibt, dass der Besitzer lesen kann.
S_IWUSRDateimodus, der angibt, dass der Besitzer schreiben kann.
S_IXUSRDateimodus, der angibt, dass der Besitzer ausführen kann.
S_IRWXGDateimodus, der angibt, dass die Gruppe lesen, schreiben und ausführen kann.
S_IRGRPDateimodus, der angibt, dass die Gruppe lesen kann.
S_IWGRPDateimodus, der angibt, dass die Gruppe schreiben kann.
S_IXGRPDateimodus, der angibt, dass die Gruppe ausführen kann.
S_IRWXODateimodus, der angibt, dass andere lesen, schreiben und ausführen können.
S_IROTHDateimodus, der angibt, dass andere lesen können.
S_IWOTHDateimodus, der angibt, dass andere schreiben können.
S_IXOTHDateimodus, der angibt, dass andere ausführen können.

Unter Windows sind nur S_IRUSR und S_IWUSR verfügbar.

Hinweise

Reihenfolge von callback- und promise-basierten Operationen

Da sie asynchron vom zugrunde liegenden Thread-Pool ausgeführt werden, gibt es keine garantierte Reihenfolge bei der Verwendung der callback- oder promise-basierten Methoden.

Beispielsweise ist das Folgende fehleranfällig, da der fs.stat()-Vorgang möglicherweise vor dem fs.rename()-Vorgang abgeschlossen wird:

js
const fs = require('node:fs')

fs.rename('/tmp/hello', '/tmp/world', err => {
  if (err) throw err
  console.log('renamed complete')
})
fs.stat('/tmp/world', (err, stats) => {
  if (err) throw err
  console.log(`stats: ${JSON.stringify(stats)}`)
})

Es ist wichtig, die Operationen korrekt zu ordnen, indem die Ergebnisse der einen abgewartet werden, bevor die andere aufgerufen wird:

js
import { rename, stat } from 'node:fs/promises'

const oldPath = '/tmp/hello'
const newPath = '/tmp/world'

try {
  await rename(oldPath, newPath)
  const stats = await stat(newPath)
  console.log(`stats: ${JSON.stringify(stats)}`)
} catch (error) {
  console.error('there was an error:', error.message)
}
js
const { rename, stat } = require('node:fs/promises')

;(async function (oldPath, newPath) {
  try {
    await rename(oldPath, newPath)
    const stats = await stat(newPath)
    console.log(`stats: ${JSON.stringify(stats)}`)
  } catch (error) {
    console.error('there was an error:', error.message)
  }
})('/tmp/hello', '/tmp/world')

Oder, wenn Sie die Callback-APIs verwenden, verschieben Sie den fs.stat()-Aufruf in den Callback des fs.rename()-Vorgangs:

js
import { rename, stat } from 'node:fs'

rename('/tmp/hello', '/tmp/world', err => {
  if (err) throw err
  stat('/tmp/world', (err, stats) => {
    if (err) throw err
    console.log(`stats: ${JSON.stringify(stats)}`)
  })
})
js
const { rename, stat } = require('node:fs/promises')

rename('/tmp/hello', '/tmp/world', err => {
  if (err) throw err
  stat('/tmp/world', (err, stats) => {
    if (err) throw err
    console.log(`stats: ${JSON.stringify(stats)}`)
  })
})

Dateipfade

Die meisten fs-Operationen akzeptieren Dateipfade, die als Zeichenkette, als <Buffer> oder als <URL>-Objekt mit dem Protokoll file: angegeben werden können.

Zeichenkettenpfade

Zeichenkettenpfade werden als UTF-8-Zeichenfolgen interpretiert, die den absoluten oder relativen Dateinamen identifizieren. Relative Pfade werden relativ zum aktuellen Arbeitsverzeichnis aufgelöst, das durch Aufrufen von process.cwd() bestimmt wird.

Beispiel mit absolutem Pfad unter POSIX:

js
import { open } from 'node:fs/promises'

let fd
try {
  fd = await open('/open/some/file.txt', 'r')
  // Etwas mit der Datei machen
} finally {
  await fd?.close()
}

Beispiel mit relativem Pfad unter POSIX (relativ zu process.cwd()):

js
import { open } from 'node:fs/promises'

let fd
try {
  fd = await open('file.txt', 'r')
  // Etwas mit der Datei machen
} finally {
  await fd?.close()
}

Datei-URL-Pfade

Hinzugefügt in: v7.6.0

Für die meisten Funktionen des Moduls node:fs kann das Argument path oder filename als <URL>-Objekt mit dem Protokoll file: übergeben werden.

js
import { readFileSync } from 'node:fs'

readFileSync(new URL('file:///tmp/hello'))

file:-URLs sind immer absolute Pfade.

Plattform-spezifische Überlegungen

Unter Windows werden file: <URL>s mit einem Hostnamen in UNC-Pfade konvertiert, während file: <URL>s mit Laufwerksbuchstaben in lokale absolute Pfade konvertiert werden. file: <URL>s ohne Hostnamen und ohne Laufwerksbuchstaben führen zu einem Fehler:

js
import { readFileSync } from 'node:fs'
// Unter Windows:

// - WHATWG file URLs mit Hostname werden in UNC-Pfade konvertiert
// file://hostname/p/a/t/h/file => \\hostname\p\a\t\h\file
readFileSync(new URL('file://hostname/p/a/t/h/file'))

// - WHATWG file URLs mit Laufwerksbuchstaben werden in absolute Pfade konvertiert
// file:///C:/tmp/hello => C:\tmp\hello
readFileSync(new URL('file:///C:/tmp/hello'))

// - WHATWG file URLs ohne Hostname müssen einen Laufwerksbuchstaben haben
readFileSync(new URL('file:///notdriveletter/p/a/t/h/file'))
readFileSync(new URL('file:///c/p/a/t/h/file'))
// TypeError [ERR_INVALID_FILE_URL_PATH]: File URL path must be absolute

file: <URL>s mit Laufwerksbuchstaben müssen : als Trennzeichen direkt nach dem Laufwerksbuchstaben verwenden. Die Verwendung eines anderen Trennzeichens führt zu einem Fehler.

Auf allen anderen Plattformen werden file: <URL>s mit einem Hostnamen nicht unterstützt und führen zu einem Fehler:

js
import { readFileSync } from 'node:fs'
// Auf anderen Plattformen:

// - WHATWG file URLs mit Hostname werden nicht unterstützt
// file://hostname/p/a/t/h/file => throw!
readFileSync(new URL('file://hostname/p/a/t/h/file'))
// TypeError [ERR_INVALID_FILE_URL_PATH]: must be absolute

// - WHATWG file URLs werden in absolute Pfade konvertiert
// file:///tmp/hello => /tmp/hello
readFileSync(new URL('file:///tmp/hello'))

Ein file: <URL> mit kodierten Schrägstrichen führt auf allen Plattformen zu einem Fehler:

js
import { readFileSync } from 'node:fs'

// Unter Windows
readFileSync(new URL('file:///C:/p/a/t/h/%2F'))
readFileSync(new URL('file:///C:/p/a/t/h/%2f'))
/* TypeError [ERR_INVALID_FILE_URL_PATH]: File URL path must not include encoded
\ or / characters */

// Unter POSIX
readFileSync(new URL('file:///p/a/t/h/%2F'))
readFileSync(new URL('file:///p/a/t/h/%2f'))
/* TypeError [ERR_INVALID_FILE_URL_PATH]: File URL path must not include encoded
/ characters */

Unter Windows führen file: <URL>s mit kodierten Backslashes zu einem Fehler:

js
import { readFileSync } from 'node:fs'

// Unter Windows
readFileSync(new URL('file:///C:/path/%5C'))
readFileSync(new URL('file:///C:/path/%5c'))
/* TypeError [ERR_INVALID_FILE_URL_PATH]: File URL path must not include encoded
\ or / characters */

Pufferpfade

Pfade, die mit einem <Buffer> angegeben werden, sind hauptsächlich auf bestimmten POSIX-Betriebssystemen nützlich, die Dateipfade als opake Bytefolgen behandeln. Auf solchen Systemen kann ein einzelner Dateipfad Untersequenzen enthalten, die mehrere Zeichenkodierungen verwenden. Wie bei String-Pfaden können <Buffer>-Pfade relativ oder absolut sein:

Beispiel mit einem absoluten Pfad unter POSIX:

js
import { open } from 'node:fs/promises'
import { Buffer } from 'node:buffer'

let fd
try {
  fd = await open(Buffer.from('/open/some/file.txt'), 'r')
  // Datei verarbeiten
} finally {
  await fd?.close()
}

Arbeitsverzeichnisse pro Laufwerk unter Windows

Unter Windows folgt Node.js dem Konzept des Arbeitsverzeichnisses pro Laufwerk. Dieses Verhalten lässt sich beobachten, wenn ein Laufwerkspfad ohne Backslash verwendet wird. Beispielsweise kann fs.readdirSync('C:\\') möglicherweise ein anderes Ergebnis liefern als fs.readdirSync('C:'). Weitere Informationen finden Sie auf dieser MSDN-Seite.

Datei-Deskriptoren

Auf POSIX-Systemen verwaltet der Kernel für jeden Prozess eine Tabelle der aktuell geöffneten Dateien und Ressourcen. Jede geöffnete Datei erhält eine einfache numerische Kennung, einen sogenannten Datei-Deskriptor. Auf Systemebene verwenden alle Dateisystemoperationen diese Datei-Deskriptoren, um jede einzelne Datei zu identifizieren und zu verfolgen. Windows-Systeme verwenden einen anderen, aber konzeptionell ähnlichen Mechanismus zur Ressourcenverfolgung. Zur Vereinfachung für die Benutzer abstrahiert Node.js die Unterschiede zwischen den Betriebssystemen und weist allen geöffneten Dateien einen numerischen Datei-Deskriptor zu.

Die callback-basierten fs.open()- und synchronen fs.openSync()-Methoden öffnen eine Datei und weisen einen neuen Datei-Deskriptor zu. Nach der Zuweisung kann der Datei-Deskriptor verwendet werden, um Daten zu lesen, Daten zu schreiben oder Informationen über die Datei anzufordern.

Betriebssysteme beschränken die Anzahl der Datei-Deskriptoren, die gleichzeitig geöffnet sein dürfen. Daher ist es wichtig, den Deskriptor zu schließen, wenn die Operationen abgeschlossen sind. Andernfalls entsteht ein Speicherleck, das letztendlich zum Absturz der Anwendung führt.

js
import { open, close, fstat } from 'node:fs'

function closeFd(fd) {
  close(fd, err => {
    if (err) throw err
  })
}

open('/open/some/file.txt', 'r', (err, fd) => {
  if (err) throw err
  try {
    fstat(fd, (err, stat) => {
      if (err) {
        closeFd(fd)
        throw err
      }

      // stat verwenden

      closeFd(fd)
    })
  } catch (err) {
    closeFd(fd)
    throw err
  }
})

Die Promise-basierten APIs verwenden ein <FileHandle>-Objekt anstelle des numerischen Datei-Deskriptors. Diese Objekte werden vom System besser verwaltet, um sicherzustellen, dass keine Ressourcen verloren gehen. Es ist jedoch weiterhin erforderlich, sie zu schließen, wenn die Operationen abgeschlossen sind:

js
import { open } from 'node:fs/promises'

let file
try {
  file = await open('/open/some/file.txt', 'r')
  const stat = await file.stat()
  // stat verwenden
} finally {
  await file.close()
}

Threadpool-Nutzung

Alle Callback- und Promise-basierten Dateisystem-APIs (mit Ausnahme von fs.FSWatcher()) verwenden den Threadpool von libuv. Dies kann für einige Anwendungen überraschende und negative Auswirkungen auf die Leistung haben. Weitere Informationen finden Sie in der Dokumentation zu UV_THREADPOOL_SIZE.

Dateisystem-Flags

Die folgenden Flags sind überall dort verfügbar, wo die Option flag eine Zeichenkette akzeptiert.

  • 'a': Datei zum Anhängen öffnen. Die Datei wird erstellt, wenn sie nicht existiert.
  • 'ax': Wie 'a', schlägt aber fehl, wenn der Pfad existiert.
  • 'a+': Datei zum Lesen und Anhängen öffnen. Die Datei wird erstellt, wenn sie nicht existiert.
  • 'ax+': Wie 'a+', schlägt aber fehl, wenn der Pfad existiert.
  • 'as': Datei zum Anhängen im synchronen Modus öffnen. Die Datei wird erstellt, wenn sie nicht existiert.
  • 'as+': Datei zum Lesen und Anhängen im synchronen Modus öffnen. Die Datei wird erstellt, wenn sie nicht existiert.
  • 'r': Datei zum Lesen öffnen. Es tritt eine Ausnahme auf, wenn die Datei nicht existiert.
  • 'rs': Datei zum Lesen im synchronen Modus öffnen. Es tritt eine Ausnahme auf, wenn die Datei nicht existiert.
  • 'r+': Datei zum Lesen und Schreiben öffnen. Es tritt eine Ausnahme auf, wenn die Datei nicht existiert.
  • 'rs+': Datei zum Lesen und Schreiben im synchronen Modus öffnen. Weist das Betriebssystem an, den lokalen Dateisystemcache zu umgehen. Dies ist hauptsächlich nützlich zum Öffnen von Dateien auf NFS-Mounts, da der potenziell veraltete lokale Cache übersprungen werden kann. Dies hat sehr reale Auswirkungen auf die E/A-Leistung, daher wird die Verwendung dieses Flags nicht empfohlen, es sei denn, es ist erforderlich. Dies macht fs.open() oder fsPromises.open() nicht zu einem synchronen blockierenden Aufruf. Wenn ein synchroner Betrieb gewünscht wird, sollte etwas wie fs.openSync() verwendet werden.
  • 'w': Datei zum Schreiben öffnen. Die Datei wird erstellt (falls sie nicht existiert) oder abgeschnitten (falls sie existiert).
  • 'wx': Wie 'w', schlägt aber fehl, wenn der Pfad existiert.
  • 'w+': Datei zum Lesen und Schreiben öffnen. Die Datei wird erstellt (falls sie nicht existiert) oder abgeschnitten (falls sie existiert).
  • 'wx+': Wie 'w+', schlägt aber fehl, wenn der Pfad existiert.

flag kann auch eine Zahl sein, wie in open(2) dokumentiert; häufig verwendete Konstanten sind von fs.constants verfügbar. Unter Windows werden Flags nach Bedarf in ihre Äquivalente übersetzt, z. B. O_WRONLY in FILE_GENERIC_WRITE oder O_EXCL|O_CREAT in CREATE_NEW, wie von CreateFileW akzeptiert.

Das exklusive Flag 'x' (Flag O_EXCL in open(2)) führt dazu, dass der Vorgang einen Fehler zurückgibt, wenn der Pfad bereits existiert. Unter POSIX gibt die Verwendung von O_EXCL einen Fehler zurück, selbst wenn der Link auf einen Pfad verweist, der nicht existiert, wenn der Pfad ein symbolischer Link ist. Das exklusive Flag funktioniert möglicherweise nicht mit Netzwerkdateisystemen.

Unter Linux funktionieren positionale Schreibvorgänge nicht, wenn die Datei im Anhängemodus geöffnet wird. Der Kernel ignoriert das Positionsargument und hängt die Daten immer an das Ende der Datei an.

Das Ändern einer Datei anstelle des Ersetzens erfordert möglicherweise, dass die Option flag auf 'r+' anstatt auf den Standardwert 'w' gesetzt wird.

Das Verhalten einiger Flags ist plattformspezifisch. Daher gibt das Öffnen eines Verzeichnisses unter macOS und Linux mit dem Flag 'a+', wie im folgenden Beispiel, einen Fehler zurück. Im Gegensatz dazu wird unter Windows und FreeBSD ein Dateideskriptor oder ein FileHandle zurückgegeben.

js
// macOS und Linux
fs.open('<directory>', 'a+', (err, fd) => {
  // => [Error: EISDIR: ungültige Operation auf einem Verzeichnis, open <directory>]
})

// Windows und FreeBSD
fs.open('<directory>', 'a+', (err, fd) => {
  // => null, <fd>
})

Unter Windows schlägt das Öffnen einer vorhandenen versteckten Datei mit dem Flag 'w' (entweder über fs.open(), fs.writeFile() oder fsPromises.open()) mit EPERM fehl. Vorhandene versteckte Dateien können mit dem Flag 'r+' zum Schreiben geöffnet werden.

Ein Aufruf von fs.ftruncate() oder filehandle.truncate() kann verwendet werden, um den Dateiinhalt zurückzusetzen.