ノードファイルの名前を一括変更

php中世界最好的语言
リリース: 2018-03-13 17:14:07
オリジナル
1552 人が閲覧しました

今回は、ノードファイルの名前の一括変更について説明します。ノードファイルの名前の一括変更に関する注意事項を実際に見てみましょう。

実際の要件では、ファイルのバッチ (テキスト、画像など) の名前を変更し、番号に従って番号を付ける必要があります。この機会を利用して、ノードの 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 サイトの他の関連記事に注目してください。

推奨読書:

JS コードを使用して弾幕エフェクトを作成する

H5 キャンバスを使用して弾幕エフェクトを作成する

以上がノードファイルの名前を一括変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!