Differences between approaches while sending a file from the server

I want to know the difference between these 2 approaches while sending a file to the browser using nodejs.

  1. Reading the file in memory and sending it using res.send() method

    app.get('/send-pdf', (req, res) => {
        const filePath = path.join(__dirname, 'path_to_your_pdf.pdf');
        const fileContent = fs.readFileSync(filePath);
    
        res.setHeader('Content-Type', 'application/pdf');
        res.send(fileContent);
    });
    
  2. Using streams in nodejs

    app.get('/stream-pdf', (req, res) => {
        const filePath = path.join(__dirname, 'path_to_your_pdf.pdf');
        const fileStream = fs.createReadStream(filePath);
    
        res.setHeader('Content-Type', 'application/pdf');
        fileStream.pipe(res);
    });
    

    I know that at server it is better to use streams as I don’t have to load the entire file in memory before sending. But I want to know whether there is any difference for the client. Since it will receive the data in chunks in both cases.

What does res.sendFile() method of express.js do different than what I did in previous 2 approaches.

I searched this question but was not able to find the answer. I went to read the source code of express.js and they were using this library for the same.