Node.jsとTypeScriptを使用してファイルシステムの操作を行う方法を紹介します。
この記事では、以下のファイル操作を紹介しています。
- 指定されたフォルダパスのファイル一覧取得
- ファイルの存在チェック
- ディレクトリの存在チェック
- ファイルの削除
- ファイルの移動
- ファイル名の変更
- 新規テキストファイルの作成
また、それぞれのファイル操作に対し、非同期版と同期版のサンプルコードで解説します。
1. ファイル一覧の取得
ディレクトリ内のファイル一覧を取得する方法です。
非同期版:
import fs from 'fs';
import path from 'path';
function listFilesAsync(directoryPath: string): void {
fs.readdir(directoryPath, (err, files) => {
if (err) {
console.error('Error fetching files:', err);
return;
}
console.log('Files:', files);
});
}
const myPath = path.join(__dirname, '/example/directory');
listFilesAsync(myPath);
同期版:
function listFilesSync(directoryPath: string): void {
try {
const files = fs.readdirSync(directoryPath);
console.log('Files:', files);
} catch (err) {
console.error('Error fetching files:', err);
}
}
listFilesSync(myPath);
2. ファイルの存在チェック
ファイルやディレクトリが存在するかどうかを確認する方法です。
同期版のみ (fs.existsSync):
function checkExistsSync(path: string): void {
const exists = fs.existsSync(path);
console.log(`${path} exists: ${exists}`);
}
checkExistsSync(path.join(myPath, 'file.txt'));
3. ファイルの削除
ファイルを削除する方法を示します。
非同期版:
function deleteFileAsync(filePath: string): void {
fs.unlink(filePath, err => {
if (err) {
console.error('Failed to delete file:', err);
return;
}
console.log(`${filePath} was deleted.`);
});
}
deleteFileAsync(path.join(myPath, 'delete-me.txt'));
同期版:
function deleteFileSync(filePath: string): void {
try {
fs.unlinkSync(filePath);
console.log(`${filePath} was deleted.`);
} catch (err) {
console.error('Failed to delete file:', err);
}
}
deleteFileSync(path.join(myPath, 'delete-me.txt'));
4. ファイルの移動と名前の変更
ファイルを移動するか名前を変更する方法です。
非同期版:
function moveFileAsync(oldPath: string, newPath: string): void {
fs.rename(oldPath, newPath, err => {
if (err) {
console.error('Error moving file:', err);
return;
}
console.log(`File moved from ${oldPath} to ${newPath}`);
});
}
moveFileAsync(path.join(myPath, 'old-name.txt'), path.join(myPath, 'new-name.txt'));
同期版:
function moveFileSync(oldPath: string, newPath: string): void {
try {
fs.renameSync(oldPath, newPath);
console.log(`File moved from ${oldPath} to ${newPath}`);
} catch (err) {
console.error('Error moving file:', err);
}
}
moveFileSync(path.join(myPath, 'old-name.txt'), path.join(myPath, 'new-name.txt'));
5. 新規テキストファイルの作成
新しいテキストファイルを作成する方法です。
非同期版:
function createFileAsync(filePath: string, content: string): void {
fs.writeFile(filePath, content, err => {
if (err) {
console.error('Failed to create file:', err);
return;
}
console.log(`${filePath} was created with content: ${content}`);
});
}
createFileAsync(path.join(myPath, 'new-file.txt'), 'Hello, this is a new file!');
同期版:
function createFileSync(filePath: string, content: string): void {
try {
fs.writeFileSync(filePath, content);
console.log(`${filePath} was created with content: ${content}`);
} catch (err) {
console.error('Failed to create file:', err);
}
}
createFileSync(path.join(myPath, 'new-file.txt'), 'Hello, this is a new file!');
まとめ
これらのサンプルコードを基にして、Node.jsとTypeScriptで効率的なファイル操作を行うことができます。非同期版と同期版の使い分けを理解し、プロジェクトに適した方法を選んでください。
0 件のコメント:
コメントを投稿