stdout に書き込むための 3 つのオプションがあります
console.log()
を使用して書き込むことができます。console.log(format, ...args)
は stdout に書き込み、常に改行 '\n'
を追加します (Windows でも)。最初の引数には、util.format()
と同じ方法で解釈されるプレースホルダーを含めることができます。
console.log('String: %s Number: %d Percent: %%', 'abc', 123);
const obj = {one: 1, two: 2};
console.log('JSON: %j Object: %o', obj, obj);
// Output:
// 'String: abc Number: 123 Percent: %'
// 'JSON: {"one":1,"two":2} Object: { one: 1, two: 2 }'
2 番目以降のすべての引数は、プレースホルダーの数が十分でない場合でも、常に出力に表示されます。
process.stdout
は stream.Readable
のインスタンスです。つまり、他の Node.js ストリームと同様に使用できます。例えば
process.stdout.write('two');
process.stdout.write(' words');
process.stdout.write('\n');
上記のコードは以下と同等です
console.log('two words');
console.log()
は常に改行を追加するため、この場合は末尾に改行がないことに注意してください。
大量のデータで .write()
を使用する場合は、§9.5.2.1 “writable.write(chunk)
” で説明されているように、バックプレッシャーを考慮する必要があります。
次のレシピは process.stdout
で動作します: §11.4 “Node.js ストリームレシピ”。
process.stdout
を Web ストリームに変換して書き込むことができます
import {Writable} from 'node:stream';
const webOut = Writable.toWeb(process.stdout);
const writer = webOut.getWriter();
try {
await writer.write('First line\n');
await writer.write('Second line\n');
await writer.close();
finally {
} .releaseLock()
writer }
次のレシピは webOut
で動作します: §11.5 “Web ストリームレシピ”。
stderr への書き込みは、stdout への書き込みと同様に機能します
console.error()
を使用して書き込むことができます。詳細については、前のセクションを参照してください。
stdin から読み取るためのオプションは次のとおりです
process.stdin
は stream.Writable
のインスタンスです。つまり、他の Node.js ストリームと同様に使用できます
// Switch to text mode (otherwise we get chunks of binary data)
process.stdin.setEncoding('utf-8');
for await (const chunk of process.stdin) {
console.log('>', chunk);
}
次のレシピは webIn
で動作します: §11.4 “Node.js ストリームレシピ”。
最初に process.stdin
を Web ストリームに変換する必要があります
import {Readable} from 'node:stream';
// Switch to text mode (otherwise we get chunks of binary data)
process.stdin.setEncoding('utf-8');
const webIn = Readable.toWeb(process.stdin);
for await (const chunk of webIn) {
console.log('>', chunk);
}
次のレシピは webIn
で動作します: §11.5 “Web ストリームレシピ”。
組み込みモジュール `'node:readline'` を使用すると、ユーザーに対話的に情報を入力するように促すことができます。例えば
import * as fs from 'node:fs';
import * as readline from 'node:readline/promises';
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
;
})
const filePath = await rl.question('Please enter a file path: ');
.writeFileSync(filePath, 'Hi!', {encoding: 'utf-8'})
fs
.close(); rl
`'node:readline'` モジュールの詳細については、以下を参照してください。
読み取り可能なストリーム
Readable.from()
: イテラブルから読み取り可能なストリームを作成する”書き込み可能なストリーム
ReadableStream を作成する
ReadableStream から読み取る
ReadableStream の変換
WritableStream の使用