2016-04-21 5 views

risposta

16

I descrittori di file sono un concetto utilizzato in molti linguaggi di programmazione, rappresentano un riferimento a un file aperto.

Il descrittore di file verrà utilizzato per fare riferimento al flusso di file corretto da tutte le funzioni relative al file system.

Infatti stdout, stdin e stderr vengono assegnati un descrittore di file troppo, si stanno occupando fd 0 attraverso 2, il successivo valore descrittore di file libero è 3. Ecco perché il valore restituito nel tuo esempio è 3.

Vedere Wikipedia per ulteriori informazioni di base.

+1

grazie mille. Questo mi ha davvero aiutato. – karthi

5

Nel tuo esempio, fd è il secondo parametro del callback passato a fs.open:

  • Che cosa è importante è che è il secondo parametro.
  • Il suo nome non è importante.

Questo secondo parametro rappresenta un file di descrizione, utile per l'accesso che ha aperto il file all'interno della richiamata.

Ad esempio :

var fs = require("fs"); 
var fileName = "foo.txt"; 

fs.exists(fileName, function(exists) { 
    if (exists) { 
    // get information about the file 
    fs.stat(fileName, function(error, stats) { 
     // open the file (getting a file descriptor to it) 
     fs.open(fileName, "r", function(error, fd) { 
     var buffer = new Buffer(stats.size); 

     // read its contents into buffer 
     fs.read(fd, buffer, 0, buffer.length, null, function(error, bytesRead, buffer) { 
      var data = buffer.toString("utf8", 0, buffer.length); 

      console.log(data); 
      fs.close(fd); 
     }); 
     }); 
    }); 
    } 
}); 

lì, avete fd (il secondo parametro di fs.open) passato a fs.read come primo parametro, e così si può leggere quel file.


1: Esempio tratto da: http://www.sitepoint.com/accessing-the-file-system-in-node-js/

+1

[Dai documenti] (https://nodejs.org/api/fs.html#fs_fs_exists_path_callback): "Uso di fs.exists() per verificare l'esistenza di un file prima di chiamare fs.open(), fs.readFile() o fs.writeFile() è ** non raccomandato **. In questo modo viene introdotta una condizione di competizione, poiché altri processi potrebbero modificare lo stato del file tra le due chiamate, mentre il codice utente dovrebbe aprire/leggere/scrivere il file direttamente e gestisci l'errore generato se il file non esiste. " Dice anche che fs.exists() è deprecato. – panepeter

Problemi correlati