2014-07-05 20 views

risposta

11

Quando si chiama fs.createReadStream si può passare in un descrittore di file:

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

Se c'è un'opzione fd, il nome del file viene ignorato.

+1

Eccellente! Ho trovato che funziona anche il contrario, con 'fs.createWriteStream (null, {fd: fd});'. Strano questo non è documentato nel manuale, ma funziona come un fascino. – Bartvds

+0

Se osservi attentamente il documento a cui ti ho collegato, vedi che è almeno accennato nei documenti, anche se ammetto che l'ho trovato nella fonte. :) –

+0

Sì, ma tutti gli altri metodi fs hanno versioni speciali per i descrittori di file. Ho notato il parametro fd ma nulla suggerisce che potresti usare null come percorso. Strano – 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");