【保存版】Node.jsとTypeScriptでテキストファイルを読み書きする7つの方法
Node.jsとTypeScriptでテキストファイルを読み書きする方法
必要なもの
- Node.js
- TypeScript
- テキストエディタ (Visual Studio Codeなど)
手順
プロジェクトの初期化
npm init -y npx tsc --init
ファイル操作用のモジュールのインストール
Node.jsの標準モジュールである
fs
モジュールを使って、ファイル操作を行います。以下のコマンドを実行してインストールします。npm install --save @types/node
TypeScriptファイルの作成
テキストファイルの読み込み
以下のコードは、
input.txt
ファイルの内容を読み込み、変数content
に格納します。import * as fs from 'fs'; const content: string = fs.readFileSync('input.txt', 'utf8'); console.log(content);
説明
import * as fs from 'fs';
:fs
モジュールのすべてのメンバーをfs
オブジェクトにインポートします。const content: string = fs.readFileSync('input.txt', 'utf8');
:readFileSync
関数は、指定されたファイルを読み込み、その内容を文字列として返します。utf8
オプションは、ファイルの内容をUTF-8エンコーディングで読み込むことを指定します。console.log(content);
: コンソールにcontent
変数の内容を出力します。
以下のコードは、"Hello, World!" という文字列を
output.txt
ファイルに書き込みます。import * as fs from 'fs'; const content: string = 'Hello, World!'; fs.writeFileSync('output.txt', content);
const content: string = 'Hello, World!';
: "Hello, World!" という文字列をcontent
変数に格納します。fs.writeFileSync('output.txt', content);
:writeFileSync
関数は、指定されたファイルに文字列を書き込みます。
実行
以下のコマンドを実行して、TypeScriptファイルをコンパイルし、Node.jsで実行します。
npx tsc && node index.js
コンソールに
input.txt
ファイルの内容と、output.txt
ファイルに書き込まれた文字列が表示されます。
補足
非同期処理
エラー処理
その他のファイル操作
Node.jsとTypeScriptでテキストファイルを読み書きするサンプルコード
import * as fs from 'fs';
const readFile = (path: string) => {
try {
const content = fs.readFileSync(path, 'utf8');
console.log(content);
} catch (error) {
console.error(error.message);
}
};
readFile('input.txt');
- このコードは
readFile
という関数を定義します。 readFile
関数は、引数としてファイルパスを受け取り、そのファイルの内容を読み込みます。- ファイルの読み込みに成功すると、その内容をコンソールに出力します。
import * as fs from 'fs';
const writeFile = (path: string, content: string) => {
try {
fs.writeFileSync(path, content, 'utf8');
console.log('ファイルを書き込みました。');
} catch (error) {
console.error(error.message);
}
};
writeFile('output.txt', 'Hello, World!');
- ファイルへの書き込みに成功すると、「ファイルを書き込みました。」というメッセージをコンソールに出力します。
使い方
- 上記のコードを
index.ts
という名前のファイルに保存します。
npx tsc && node index.js
- 上記のコードはあくまで一例です。必要に応じて、エラー処理や非同期処理を追加してください。
- ファイルパスは、ご自身の環境に合わせて変更してください。
Node.jsとTypeScriptでテキストファイルを読み書きするその他の方法
Promiseを使った非同期処理
import * as fs from 'fs';
const readFile = async (path: string) => {
try {
const content = await fs.promises.readFile(path, 'utf8');
console.log(content);
} catch (error) {
console.error(error.message);
}
};
readFile('input.txt');
- このコードは
readFile
関数にasync
キーワードを追加し、Promiseを使った非同期処理に変更しています。 await
キーワードを使って、fs.promises.readFile
関数の結果を非同期に待機します。
Streamを使ったファイル操作
import * as fs from 'fs';
const readFile = (path: string) => {
const stream = fs.createReadStream(path, 'utf8');
let content = '';
stream.on('data', (chunk: Buffer) => {
content += chunk.toString();
});
stream.on('end', () => {
console.log(content);
});
stream.on('error', (error: Error) => {
console.error(error.message);
});
};
readFile('input.txt');
- このコードは
fs.createReadStream
関数を使って、ファイルの読み込みを行うStreamを作成します。 data
イベントは、ファイルからデータが読み込まれたときに発生します。
これらのライブラリは、PromiseやStreamを使った非同期処理、エラー処理、その他の便利な機能を提供しています。
上記以外にも、Node.jsとTypeScriptでテキストファイルを読み書きする方法は様々です。自分に合った方法を見つけて、開発にご活用ください。
node.js typescript