TypeScript で、指定したディレクトリ内に存在するディレクトリやファイルのリストを取得する

TypeScriptでNodeJSを使い、指定したディレクトリ内に存在する
ディレクトリやファイルのリストを取得してみたいと思います。

ディレクトリパスの中に存在しているディレクトリを取得する

fs.readdirSync メソッドを使用してディレクトリを参照し、ディレクトリのみにフィルタリングして
リストを取得します。

import {readdirSync} from "fs"

export function getDirectoryList(dirPath:string):string[] {

    let dirList: string[] = new Array();

    dirList = readdirSync(dirPath, {
        withFileTypes: true, 
    }).filter(dirent => dirent.isDirectory())
    .map(dirent => dirent.name);

    return dirList;

}

引数にディレクトリパスを指定します。返り値として、ディレクトリ名が格納された文字列配列を返却します。

fs.readdirSync を使用して、ディレクトリ内のリストを取得します。
このとき、withFileTypes:trueをオプションで指定することにより、fs.Dirent
オブジェクトで返却されます。

Node.js fs.readdirSync

その後、dirent.isDirectory() でディレクトリだけにフィルタリングします。
このdirent.isDirectory()メソッドは、direntオブジェクトの中身がディレクトリの場合に
Trueを返却します。

Class: fs.Dirent

最後に mapメソッドでディレクトリ名を取得し、配列に格納します。

ディレクトリパスの中に存在しているファイルを取得する

基本的には、上述のgetDirectoryListメソッドと同じで、違いとしては、
フィルタリングの箇所をdirent.isDirectory() から dirent.isFile() に変更しています。

これにより、ファイルのみのリストを文字列配列として返却しています。

import {readdirSync} from "fs"

export function getFileList(dirPath:string):string[] {

    let dirList: string[] = new Array();

    dirList = readdirSync(dirPath, {
        withFileTypes: true, 
    }).filter(dirent => dirent.isFile())
    .map(dirent => dirent.name);

    return dirList;

}

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です