2016-04-21 21 views

Odpowiedz

16

Deskryptory plików są pojęciem używanym w wielu językach programowania, stanowią odniesienie do otwartego pliku.

Deskryptor pliku zostanie wykorzystany do odnoszenia poprawnego strumienia plików przez wszystkie funkcje związane z systemem plików.

W rzeczywistości stdout, stdin i stderr przydzielane deskryptor też oni okupują fd 0 przez 2, następny wolny wartość deskryptor pliku jest 3. To dlatego wartość zwracana w swoim przykładem jest 3.

Aby uzyskać dodatkowe informacje, zobacz artykuł Wikipedia.

+1

Dziękuję bardzo. To naprawdę pomogło. – karthi

5

W przykładzie fd jest drugim parametrem callback przekazany do fs.open:

  • Ważne jest to, że jest drugi parametr.
  • Jego nazwa nie jest ważna.

Ten drugi parametr reprezentuje deskryptor plików, przydatnych do dostępu, który otworzył plik wewnątrz zwrotnego.

Na przykład :

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); 
     }); 
     }); 
    }); 
    } 
}); 

tam masz fd (drugi parametr fs.open) przeszedł do fs.read jako pierwszy parametr, a więc można odczytać tego pliku.


1: Przykład wzięty z: http://www.sitepoint.com/accessing-the-file-system-in-node-js/

+1

[Od dokumentów] (https://nodejs.org/api/fs.html#fs_fs_exists_path_callback): "Używanie fs.exists() do sprawdzenia istnienia pliku przed wywołaniem fs.open(), fs.readFile() lub fs.writeFile() nie jest ** zalecane ** Wprowadzanie takiego warunku wyścigu, ponieważ inne procesy mogą zmienić stan pliku między dwoma wywołaniami, zamiast tego kod użytkownika powinien otworzyć/odczytać/zapisać plik bezpośrednio i obsłużyć błąd podniesiony, jeśli plik nie istnieje. " Mówi również, że fs.exists() jest przestarzałe. – panepeter

Powiązane problemy