title: What are the pros and cons of fs.createReadStream vs fs.readFile in node.js?
body: <p>I'm mucking about with node.js and have discovered two ways of reading a file and sending it down the wire, once I've established that it exists and have sent the proper MIME type with writeHead:</p>
  
  <pre><code>// read the entire file into memory and then spit it out
  
  fs.readFile(filename, function(err, data){
    if (err) throw err;
    response.write(data, 'utf8');
    response.end();
  });
  
  // read and pass the file as a stream of chunks
  
  fs.createReadStream(filename, {
    'flags': 'r',
    'encoding': 'binary',
    'mode': 0666,
    'bufferSize': 4 * 1024
  }).addListener( "data", function(chunk) {
    response.write(chunk, 'binary');
  }).addListener( "close",function() {
    response.end();
  });
  </code></pre>
  
  <p>Am I correct in assuming that fs.createReadStream might provide a better user experience if the file in question was something large, like a video? It feels like it might be less block-ish; is this true?  Are there other pros, cons, caveats, or gotchas I need to know?</p>