2014-07-05 16 views

Odpowiedz

11

Po wywołaniu fs.createReadStream można przekazać w deskryptorze pliku:

var fs = require('fs'); 
var fd = fs.openSync('/tmp/tmp.js', 'r'); 
var s = fs.createReadStream(null, {fd: fd}); 
s.pipe(process.stdout); 

Jeśli istnieje opcja fd, nazwa pliku jest ignorowana.

+1

Doskonale! Znalazłem odwrotny działa również, z 'fs.createWriteStream (null, {fd: fd});'. Dziwne to nie jest udokumentowane w instrukcji, ale działa jak urok. – Bartvds

+0

Jeśli uważnie patrzysz na dokument, do którego się przyłączyłem, widzisz, że jest to przynajmniej wskazane w dokumentach, chociaż przyznaję, że znalazłem go w źródle. :) –

+0

Tak, ale wszystkie inne metody fs mają wersje spceial dla deskryptorów plików. Zauważyłem parametr fd, ale nic nie sugeruje, że możesz użyć wartości null jako ścieżki. Dziwne to. – Bartvds

1
// Open &3: 
process.oob1 = fs.createWriteStream(null, { fd: 3 }); 
// Write to &3/oob1 (out-of-band 1) 
process.oob1.write("Note: this will throw an exception without 3>&1 or something else declaring the existence of &3"); 
Powiązane problemy