Node.jsでファイル名抽出
Node.jsにおいて、絶対パスからファイル名を取得する方法はいくつかあります。ここでは、path
モジュールとfs
モジュールを利用する方法について説明します。
pathモジュールを利用する
path
モジュールは、ファイルパスの操作を行うためのユーティリティを提供します。絶対パスからファイル名を取得するには、basename()
メソッドを使用します。
const path = require('path');
const absolutePath = '/Users/username/Documents/file.txt';
const fileName = path.basename(absolutePath);
console.log(fileName); // Output: file.txt
basename()
メソッドは、指定された絶対パスからファイル名部分を抽出します。オプションとして、拡張子を除外することもできます。
const fileNameWithoutExtension = path.basename(absolutePath, '.txt');
console.log(fileNameWithoutExtension); // Output: file
fs
モジュールは、ファイルシステムの操作を行うためのユーティリティを提供します。絶対パスからファイル名を取得するには、stat()
メソッドを使用し、その後ファイル名の取得を行います。
const fs = require('fs');
const path = require('path');
const absolutePath = '/Users/username/Documents/file.txt';
fs.stat(absolutePath, (err, stats) => {
if (err) {
console.error(err);
return;
}
const fileName = path.basename(stats.path);
console.log(fileName); // Output: file.txt
});
stat()
メソッドは、指定された絶対パスのファイル情報を取得します。ファイル情報のpath
プロパティにファイルの絶対パスが格納されているため、basename()
メソッドを使用してファイル名を取得することができます。
Node.jsでファイル名抽出の例
const path = require('path');
// 絶対パス
const absolutePath = '/Users/username/Documents/file.txt';
// ファイル名を取得
const fileName = path.basename(absolutePath);
console.log(fileName); // Output: file.txt
- path.basename(absolutePath)
絶対パスからファイル名を取得します。
const fs = require('fs');
const path = require('path');
// 絶対パス
const absolutePath = '/Users/username/Documents/file.txt';
// ファイル情報を取得
fs.stat(absolutePath, (err, stats) => {
if (err) {
console.error(err);
return;
}
// ファイル名を取得
const fileName = path.basename(stats.path);
console.log(fileName); // Output: file.txt
});
- stats.path
ファイルの絶対パスを取得します。 - fs.stat(absolutePath)
絶対パスに対応するファイルの情報を取得します。
拡張子を除外する
const path = require('path');
// 絶対パス
const absolutePath = '/Users/username/Documents/file.txt';
// 拡張子を除外してファイル名を取得
const fileNameWithoutExtension = path.basename(absolutePath, '.txt');
console.log(fileNameWithoutExtension); // Output: file
正規表現を利用する
const absolutePath = '/Users/username/Documents/file.txt';
// 正規表現を使用してファイル名を取得
const fileName = absolutePath.match(/[^/]+$/)[0];
console.log(fileName); // Output: file.txt
- /[^/]+$/
この正規表現は、スラッシュ(/
)以外の文字が1つ以上連続するパターンをマッチします。つまり、ファイル名の部分を抽出します。
split()
メソッドを利用する
const absolutePath = '/Users/username/Documents/file.txt';
// パスをスラッシュで分割し、最後の要素を取得
const fileName = absolutePath.split('/').pop();
console.log(fileName); // Output: file.txt
- .pop()
配列の最後の要素を取得します。 - absolutePath.split('/')
絶対パスをスラッシュで分割します。
lastIndexOf()
メソッドを利用する
const absolutePath = '/Users/username/Documents/file.txt';
// 最後のスラッシュの位置を取得し、そこからファイル名を取得
const lastSlashIndex = absolutePath.lastIndexOf('/');
const fileName = absolutePath.substring(lastSlashIndex + 1);
console.log(fileName); // Output: file.txt
- absolutePath.substring(lastSlashIndex + 1)
最後のスラッシュの次の位置からファイル名を取得します。 - absolutePath.lastIndexOf('/')
絶対パスで最後のスラッシュの位置を取得します。
node.js path fs