欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node文件批量重命名的方法示例

 更新時間:2017年10月23日 10:18:36   作者:bestvist  
本篇文章主要介紹了node文件批量重命名的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在一個實際需求中,需要對一批文件(如:文本、圖片)進行重命名,按照數(shù)字編號。正好借此熟悉了一下node的fs文件操作,寫了一個批量修改文件名的腳本。

需求

現(xiàn)有以下圖片文件

需要批量修改文件名稱,變?yōu)榻y(tǒng)一前綴名稱并且自增索引,修改后效果

最簡單的人力操作就是逐個文件重命名,但本著DRY(Don't repeat yourself)原則,還是寫一個node腳本搞定。

研究

node中要進行文件操作需要了解一下fs模塊

在fs模塊中有同步和異步兩種方式

讀取文件

//異步
fs.readFile('test.txt', 'utf-8' (err, data) => {
  if (err) {
    throw err;
  }
  console.log(data);
});

//同步
let data = fs.readFileSync('test.txt');
console.log(data);

異步讀取文件參數(shù):文件路徑,編碼方式,回調(diào)函數(shù)

寫入文件

fs.writeFile('test2.txt', 'this is text', { 'flag': 'w' }, err => {
  if (err) {
    throw err;
  }
  console.log('saved');
});

寫入文件參數(shù):目標文件,寫入內(nèi)容,寫入形式,回調(diào)函數(shù)

flag寫入方式:

r:讀取文件
w:寫文件
a:追加

創(chuàng)建目錄

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為目錄下的文件或目錄名稱數(shù)組

獲取文件信息

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

創(chuàng)建讀取流

let stream = fs.createReadStream('test.txt');

創(chuàng)建寫入流

let stream = fs.createWriteStreamr('test_copy.txt');

開發(fā)

開發(fā)思路:

  1. 讀取源目錄
  2. 判讀存放目錄是否存在,不存在時新建目錄
  3. 復制文件
  4. 判斷復制內(nèi)容是否為文件
  5. 創(chuàng)建讀取流
  6. 創(chuàng)建寫入流
  7. 鏈接管道,寫入文件內(nèi)容
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++;
  })
}

效果

總結(jié)

node提供了很多模塊可以幫助我們完成不同需求的功能開發(fā),使javascript不僅僅局限與瀏覽器中,嘗試自己編寫一些腳本有助于對這些模塊的理解,同時也能提高辦公效率。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • pnpm workspace管理monorepo項目使用過程詳解

    pnpm workspace管理monorepo項目使用過程詳解

    這篇文章主要為大家介紹了pnpm workspace管理monorepo項目使用過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 我的Node.js學習之路(二)NPM模塊管理

    我的Node.js學習之路(二)NPM模塊管理

    npm 是 Node.js 的模塊依賴管理工具。作為開發(fā)者使用的工具,主要解決開發(fā) Node.js 時會遇到的問題。如同 RubyGems 對于 Ruby 開發(fā)者和 Maven 對于 Java 開發(fā)者的重要性,npm 對與 Node.js 的開發(fā)者和社區(qū)的重要性不言而喻。
    2014-07-07
  • 新手必須知的Node.js 4個JavaScript基本概念

    新手必須知的Node.js 4個JavaScript基本概念

    本文介紹了4個基本JavaScript概念,它是你學習node.js所必需要掌握,下面就讓我們來看一下具體是哪4個基本JavaScript概念
    2018-09-09
  • nodejs構(gòu)建本地web測試服務器 如何解決訪問靜態(tài)資源問題

    nodejs構(gòu)建本地web測試服務器 如何解決訪問靜態(tài)資源問題

    這篇文章主要為大家詳細介紹了nodejs構(gòu)建本地web測試服務器,教大家如何解決訪問靜態(tài)資源問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Node.js學習之查詢字符串解析querystring詳解

    Node.js學習之查詢字符串解析querystring詳解

    這篇文章主要給大家介紹了關于Node.js查詢字符串解析querystring的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用node.js具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-09-09
  • NodeJS中配置請求代理服務器方式

    NodeJS中配置請求代理服務器方式

    這篇文章主要介紹了NodeJS中配置請求代理服務器方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Node.js實現(xiàn)批量替換文件內(nèi)容示例

    Node.js實現(xiàn)批量替換文件內(nèi)容示例

    這篇文章主要為大家介紹了Node.js實現(xiàn)批量替換文件內(nèi)容示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 如何在命令行判斷node.js啟動了沒有(最新)

    如何在命令行判斷node.js啟動了沒有(最新)

    這篇文章主要介紹了如何在命令行判斷node.js啟動了沒有,使用 tasklist 命令列出所有正在運行的進程,并使用 findstr 命令過濾出 Node.js 進程,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • npm install -g 遇到權(quán)限問題解析

    npm install -g 遇到權(quán)限問題解析

    這篇文章主要為大家介紹了npm install -g 遇到權(quán)限問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Node.js中你不可不精的Stream(流)

    Node.js中你不可不精的Stream(流)

    這篇文章主要給大家介紹了關于Node.js中你不可不精的Stream(流)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06

最新評論