您的位置:

Node.js文件读取详解

在Node.js中,文件读取是一项基本操作。本文将从多个角度对Node.js文件读取进行详细阐述,并提供相关代码示例。

一、nodejs读取文件内容

使用fs模块的readFile函数可以读取文件的全部内容,代码如下:


const fs = require('fs');
 
fs.readFile('path/to/file', (err, data) => {
  if (err) throw err;
  console.log(data);
});

其中readFile函数需要传入文件的路径,回调函数中的data即为读取到的文件内容。如果读取文件出现错误,则err会包含错误信息。请注意,使用readFile不能使用Stream的方式逐行读取。

二、nodejs读取文件并复制给变量

当文件内容需要存储到变量中时,可以使用readFileSync代替readFile。代码如下:


const fs = require('fs');
 
const content = fs.readFileSync('path/to/file');
console.log(content);

使用readFileSync直接返回文件内容,将其赋给某个变量即可。

三、nodejs读取文件名

在Node.js中,使用path模块的basename函数即可获取文件名。代码如下:


const path = require('path');
 
const fileName = path.basename('path/to/file');
console.log(fileName);

其中,basename取的是路径的最后一部分,即文件名。

四、nodejs读取文件的模块

Node.js中有多种模块可用于文件读取。除了fs和path外,还有buffer和stream模块。

buffer模块可以用于文件的二进制读取。stream模块相对而言则更高效,它以流的方式逐行读取,节省内存资源并支持大文件的读取。

五、nodejs读取文件夹时的路径问题

在Node.js中,读取文件夹使用fs.readdir函数,可以返回文件夹下的所有文件名。

此时需要注意的是,返回的文件名只包含相对路径,并缺少文件夹的路径信息。因此,如果需要得到文件夹中的文件的完整路径,需要使用path模块的join函数。代码如下:


const fs = require('fs');
const path = require('path');
 
const folderPath = 'path/to/folder';
fs.readdir(folderPath, (err, files) => {
  if (err) throw err;
  files.forEach(file => {
    console.log(path.join(folderPath, file));
  });
});

在上述代码中,join函数组合了文件夹路径和文件名,得到完整的文件路径。

六、nodejs读取文件信息

在Node.js中,使用fs.stat函数可以读取文件的详细信息,包括文件大小、创建时间等等。

代码示例如下:


const fs = require('fs');
 
fs.stat('path/to/file', (err, stats) => {
  if (err) throw err;
  console.log(stats);
});

其中stats包含了文件的详细信息,我们可以通过其属性获取文件的大小,创建时间等等。

七、nodejs读取文件性能

在文件读取时,性能是一个重要的考虑因素。在Node.js中,使用fs模块提供的不同方法可以实现不同的性能效果。

使用readFileSync方法可以保证文件的全部内容被读取,但性能较低,适合读取小文件。

对于大文件的读取,使用fs.createReadStream方法可以采用流的方式进行逐行读取,节省内存,提高性能。下面是一段读取大文件时的代码:


const fs = require('fs');
 
const readStream = fs.createReadStream('path/to/file');
let data = '';
 
readStream.on('data', chunk => {
  data += chunk;
});
 
readStream.on('end', () => {
  console.log(data);
});

在上述代码中,createReadStream返回一个可读流,可以使用on方法对每一行进行处理,以达到流的效果。

八、nodejs读取文件大小

在Node.js中,使用fs.stat函数可以获取文件的大小。代码示例如下:


const fs = require('fs');
 
fs.stat('path/to/file', (err, stats) => {
  if (err) throw err;
  console.log(stats.size);
});

其中stats.size即为文件的大小,单位为字节。

九、nodejs读取文件并上传

在Node.js中,我们可以使用http、https模块进行文件上传。下面是一段上传文件的代码:


const fs = require('fs');
const http = require('http');
const path = require('path');
const FormData = require('form-data');
 
const filePath = 'path/to/file';
const fileName = path.basename(filePath);
const url = 'http://example.com/upload';
const form = new FormData();
 
form.append('file', fs.createReadStream(filePath), fileName);
 
const req = http.request(url, res => {
  console.log(res.statusCode);
});
 
form.pipe(req);

在上述代码中,我们首先使用FormData模块创建一个表单数据。然后使用fs.createReadStream函数读取文件,并将其放入表单中。最后使用http.request函数进行上传。

十、nodejs读取文件失败选取

在Node.js中,fs模块提供的readFile函数会将错误信息传入回调函数的第一个参数中。我们可以通过对该参数的处理,进行读取失败的选取。

代码示例如下:


const fs = require('fs');
 
fs.readFile('path/to/file', (err, data) => {
  if (err) {
    if (err.code === 'ENOENT') {
      console.log('文件不存在!');
    } else {
      console.log('读取文件失败!');
    }
  } else {
    console.log(data);
  }
});

在上述代码中,我们通过对错误码进行判断,进行读取失败的选取。