【保存版】Node.jsとTypeScriptでテキストファイルを読み書きする7つの方法

2024-05-24

Node.jsとTypeScriptでテキストファイルを読み書きする方法

必要なもの

  • Node.js
  • TypeScript
  • テキストエディタ (Visual Studio Codeなど)

手順

  1. プロジェクトの初期化

    npm init -y
    npx tsc --init
    
  2. ファイル操作用のモジュールのインストール

    Node.jsの標準モジュールである fs モジュールを使って、ファイル操作を行います。以下のコマンドを実行してインストールします。

    npm install --save @types/node
    
  3. TypeScriptファイルの作成

  4. テキストファイルの読み込み

    以下のコードは、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 変数の内容を出力します。
  5. 以下のコードは、"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 関数は、指定されたファイルに文字列を書き込みます。
  6. 実行

    以下のコマンドを実行して、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!');
    
    • ファイルへの書き込みに成功すると、「ファイルを書き込みました。」というメッセージをコンソールに出力します。

    使い方

    1. 上記のコードを 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


    Express.js でワイルドカードルーティングをマスターしよう! 〜基礎から応用まで徹底解説〜

    ワイルドカードの使用方法Express. js では、* アスタリスク記号を使用してワイルドカードを表します。この記号は、パス内の任意の数の文字列と一致します。たとえば、次のルートは、/users または /users/alice または /users/bob などのパスに一致します。...


    Mongooseで_idと文字列を比較する際の5つの方法:包括的な比較

    Mongoose でドキュメントを操作する際、_id フィールドは重要な役割を果たします。このフィールドは、MongoDB ドキュメントを一意に識別する ObjectId を保持します。一方、アプリケーションでは、文字列を頻繁に比較する必要があります。...


    TypeScriptにおける「this」の理解と使い⽅:クラスメソッド内部を深く掘り下げる

    この解説では、TypeScriptにおけるクラスメソッド内部の「this」について、分かりやすく解説します。「jquery」や具体的なコード例は含まれませんが、「this」の理解と使い⽅を深めることで、jQueryを含む様々なライブラリやフレームワークにおける「this」の扱いにも役⽴つでしょう。...


    Node.jsを最新バージョンに更新する

    「npm not working - "read ECONNRESET"" エラーは、Node. jsとnpmを使用する際に発生する一般的なエラーです。このエラーは、npmがレジストリに接続できないことを示しており、様々な原因によって発生します。...


    JavaScript、TypeScript、Angular で Angular2 イベントの型を理解する

    Angular2 イベントは、コンポーネント間またはコンポーネントと外部要素間でデータをやり取りするための重要なメカニズムです。これらのイベントを理解し、適切な型を扱うことは、Angular アプリケーションを効果的に開発するために不可欠です。...