ホームページ > ウェブフロントエンド > jsチュートリアル > ノードファイルの一括リネーム例の詳細説明

ノードファイルの一括リネーム例の詳細説明

小云云
リリース: 2018-01-20 17:45:44
オリジナル
1936 人が閲覧しました

この記事では、主にノードファイルの名前を一括変更する例を紹介します。編集者が非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

実際の要件では、ファイルのバッチ (テキスト、画像など) の名前を変更し、番号に従って番号を付ける必要があります。この機会を利用して、ノードの 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.isDirectory()ディレクトリかどうかstats.isBlockDevice()ブロックデバイスかどうかstats.isCharacterDevice( 」 ()ソケットかどうか読み取りストリームを作成書き込みストリームを作成
let stream = fs.createWriteStreamr('test_copy.txt');
ログイン後にコピー
開発開発アイデア: 読むコピー元のディレクトリ保存ディレクトリがあるか確認保存ディレクトリが存在する場合は新規ディレクトリを作成ファイルをコピー
let stream = fs.createReadStream('test.txt');
ログイン後にコピー

コピーした内容がファイルかどうかを判断


作成読み取りストリーム


書き込みストリームを作成

ファイルコンテンツを書き込むためのリンクパイプ

  1. 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++;
      })
    }
    ログイン後にコピー

    効果

  2. 概要
  3. Nodeは私たちを助ける多くのモジュールを提供します完全な機能開発JavaScript がブラウザーに限定されないように、さまざまなニーズに合わせてスクリプトを自分で作成してみると、これらのモジュールの理解が深まり、オフィスの効率が向上します。

  4. 関連おすすめ:

  5. ノードを使ってファイル名を一括変更する機能を実装する方法
  6. PHPを使ってフォルダ内の全ファイルの名前を一括変更する実装方法の紹介
  7. phpバッチリネーム
  8. 以上がノードファイルの一括リネーム例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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