今回は、ノードファイルの名前の一括変更について説明します。ノードファイルの名前の一括変更に関する注意事項を実際に見てみましょう。
実際の要件では、ファイルのバッチ (テキスト、画像など) の名前を変更し、番号に従って番号を付ける必要があります。この機会を利用して、ノードの 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);
非同期でファイルを読み取るパラメータ: ファイルパス、エンコーディングメソッド、コールバック関数
ファイルの書き込み
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 メソッドを取得します:
メソッド
説明
stats.isFile() 是否为文件 stats.isDirectory() 是否为目录 stats.isBlockDevice() 是否为块设备 stats.isCharacterDevice() 是否为字符设备 stats.isSymbolicLink() 是否为软链接 stats.isFIFO() 是否为UNIX FIFO命令管道 stats.isSocket() 是否为Socket
読み取りストリームを作成します
let stream = fs.createReadStream('test.txt');
書き込みストリームを作成します
let stream = fs.createWriteStreamr('test_copy.txt');
開発
開発のアイデア:
ソースディレクトリを読み取ります
裁判官保存ディレクトリが存在するかどうか 存在する場合、存在しない場合は新しいディレクトリを作成
ファイルをコピーする
コピーした内容がファイルかどうかを判断する
読み取りストリームを作成する
書き込みストリームを作成する
リンクパイプライン、ファイルの内容を書き込みます
let fs = require('fs'), src = 'src', dist = 'dist', args = process.argv.slice(2), filename = 'image', index = 0;//show helpif (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++; }) }
この記事のケースを読んだことがあるかと思います。方法をマスターした後は、よりエキサイティングなコンテンツについては、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
以上がノードファイルの名前を一括変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。