ホームページ > 記事 > ウェブフロントエンド > ノードファイルの一括リネーム例の詳細説明
この記事では、主にノードファイルの名前を一括変更する例を紹介します。編集者が非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
実際の要件では、ファイルのバッチ (テキスト、画像など) の名前を変更し、番号に従って番号を付ける必要があります。この機会を利用して、ノードの fs ファイル操作に慣れ、ファイル名をバッチ変更するスクリプトを作成しました。
要件
現在以下の画像ファイルが存在します
ファイル名を一括で変更し、統一されたプレフィックス名に変更し、変更後の効果を自動的に増やす必要があります
。
最も簡単な手動操作は、ファイルの名前を 1 つずつ変更することですが、DRY (同じことを繰り返さない) 原則に沿って、ノード スクリプトを作成することをお勧めします。
調査
ノードでファイル操作を実行するには、fsモジュールを理解する必要があります
fsモジュールには同期と非同期の2つの方法があります
ファイルを読む
//异步 fs.readFile('test.txt', 'utf-8' (err, data) => { if (err) { throw err; } console.log(data); }); //同步 let data = fs.readFileSync('test.txt'); console.log(data);
Asynch皮肉なことにファイル読み込みパラメータ: ファイルパス、エンコード方式、コールバック関数
ファイル書き込み
fs.writeFile('test2.txt', 'this is text', { 'flag': 'w' }, err => { if (err) { throw err; } console.log('saved'); });
ファイル書き込みパラメータ: 対象ファイル、書き込み内容、書き込みフォーム、コールバック関数
フラグ書き込みメソッド:
r:ファイルの読み取り
w: ファイルの書き込み
a: 追加
ディレクトリの作成
fs.mkdir('dir', (err) => { if (err) { throw err; } console.log('make dir success'); });dir は新しいディレクトリの名前です
ディレクトリの読み取り
fs.readdir('dir',(err, files) => { if (err) { throw err; } console.log(files); });dir が読み取られますディレクトリ名、 files は、ディレクトリ配下のファイルまたはディレクトリ名の配列です。
fs.stat('test.txt', (err, stats)=> { console.log(stats.isFile()); //true })stats メソッドで、ファイル情報を取得します。 isファイル()
ファイルかどうか
stats.isBlockDevice() | |
---|---|
stats.isCharacterDevice( 」 () | ソケットかどうか |
読み取りストリームを作成 | |
let stream = fs.createReadStream('test.txt'); | 書き込みストリームを作成|
開発 | |
開発アイデア: | |
保存ディレクトリがあるか確認 | |
保存ディレクトリが存在する場合は新規ディレクトリを作成 |
コピーした内容がファイルかどうかを判断
書き込みストリームを作成
ファイルコンテンツを書き込むためのリンクパイプ
let fs = require('fs'), src = 'src', dist = 'dist', args = process.argv.slice(2), filename = 'image', index = 0; //show help if (args.length === 0 || args[0].match('--help')) { console.log('--help\n \t-src 文件源\n \t-dist 文件目标\n \t-n 文件名\n \t-i 文件名索引\n'); return false; } args.forEach((item, i) => { if (item.match('-src')) { src = args[i + 1]; } else if (item.match('-dist')) { dist = args[i + 1]; } else if (item.match('-n')) { filename = args[i + 1]; } else if (item.match('-i')) { index = args[i + 1]; } }); fs.readdir(src, (err, files) => { if (err) { console.log(err); } else { fs.exists(dist, exist => { if (exist) { copyFile(files, src, dist, filename, index); } else { fs.mkdir(dist, () => { copyFile(files, src, dist, filename, index); }) } }); } }); function copyFile(files, src, dist, filename, index) { files.forEach(n => { let readStream, writeStream, arr = n.split('.'), oldPath = src + '/' + n, newPath = dist + '/' + filename + index + '.' + arr[arr.length - 1]; fs.stat(oldPath, (err, stats) => { if (err) { console.log(err); } else if (stats.isFile()) { readStream = fs.createReadStream(oldPath); writeStream = fs.createWriteStream(newPath); readStream.pipe(writeStream); } }); index++; }) }
効果
Nodeは私たちを助ける多くのモジュールを提供します完全な機能開発JavaScript がブラウザーに限定されないように、さまざまなニーズに合わせてスクリプトを自分で作成してみると、これらのモジュールの理解が深まり、オフィスの効率が向上します。
以上がノードファイルの一括リネーム例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。