Node.js的__dirname,__filename,process.cwd(),./文件路径

简单说一下这几个路径的意思:
__dirname: 获得当前执行文件所在目录的完整目录名
__filename: 获得当前执行文件的带有完整绝对路径的文件名
process.cwd():获得当前执行node命令时候的文件夹目录名
./: 文件所在目录

先看一看我电脑当前的目录结构:

syntax/
    -nodejs/
        -1.findLargest.js
        -2.path.js
        -3.fs.js
    -regs
        -regx.js
        -test.txt

在 path.js 里面我们写这些代码,看看输出是什么:

const path = require('path')
console.log('__dirname:', __dirname)
console.log('__filename:', __filename)
console.log('process.cwd():', process.cwd())
console.log('./:', path.resolve('./'))

在当前目录下也就是nodejs目录运行 node path.js,我们看看输出结果:

__dirname:     /Users/jawil/Desktop/nodejs/demo/ES6-lottery/syntax/nodejs
__filename:    /Users/jawil/Desktop/nodejs/demo/ES6-lottery/syntax/nodejs/2.path.js
process.cwd(): /Users/jawil/Desktop/nodejs/demo/ES6-lottery/syntax/nodejs
./:            /Users/jawil/Desktop/nodejs/demo/ES6-lottery/syntax/nodejs

总结:

**

__dirname: 获得当前执行文件所在目录的完整目录名 __filename: 获得当前执行文件的带有完整绝对路径的文件名 process.cwd():获得当前执行node命令时候的文件夹目录名

./: 不使用require时候,./与process.cwd()一样,使用require时候,与__dirname一样

**

Node.js 中,可以使用 `child_process.spawn()` 方法来创建子进程处理多个文件。`spawn()` 方法返回一个 `ChildProcess` 对象,可以通过该对象的 `stdout` 和 `stderr` 事件监听子进程的输出和错误信息,通过 `on()` 方法监听 `exit` 事件来处理子进程的退出事件。 例如,可以使用以下代码来创建多个子进程处理多个文件: ```javascript const { spawn } = require('child_process'); const files = ['file1.txt', 'file2.txt', 'file3.txt']; for (const file of files) { const child = spawn('node', ['fileProcessor.js', file]); child.stdout.on('data', (data) => { console.log(`Processed ${file}: ${data}`); }); child.stderr.on('data', (data) => { console.error(`Error processing ${file}: ${data}`); }); child.on('exit', (code) => { console.log(`Child process exited with code ${code}`); }); } ``` 在这个例子中,我们定义了一个文件数组 `files`,其中包含要处理的多个文件名。然后,我们使用 `spawn()` 方法创建多个子进程,每个子进程通过传递不同的文件名作为参数来处理不同的文件。在子进程中处理完文件后,通过 `console.log()` 和 `console.error()` 方法输出处理结果和错误信息。同时,通过监听 `exit` 事件来处理子进程的退出事件。 在子进程中,可以使用以下代码来读取文件并处理数据: ```javascript const fs = require('fs'); const path = require('path'); const filePath = process.argv[2]; // 获取传递的文件名参数 fs.readFile(path.join(__dirname, filePath), 'utf8', (err, data) => { if (err) { console.error('Error processing file:', err); process.exit(1); } const result = processData(data); // 处理数据 console.log(result); // 输出处理结果 process.exit(0); // 退出子进程 }); ``` 在这个例子中,我们使用 `process.argv[2]` 方法获取传递的文件名参数,并使用 Node.js 的 `fs` 模块读取文件数据。然后,我们通过 `console.log()` 方法输出处理结果,并通过 `process.exit()` 方法退出子进程。 需要注意的是,在使用多进程处理多个文件时,需要考虑进程的数量和文件的大小。如果子进程数量过多或者文件过大,可能会导致系统资源不足,从而影响程序的性能和稳定性。因此,需要根据实际情况选择合适的进程数量和文件处理方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值