Maison > interface Web > js tutoriel > le corps du texte

nodejs implémente la traversée des dossiers et le comptage des tailles de fichiers_node.js

WBOY
Libérer: 2016-05-16 15:57:28
original
1666 Les gens l'ont consulté

Cela fait plus de 2 mois que j'ai quitté l'entreprise. J'ai écrit beaucoup d'outils auparavant, mais le jour de mon départ, j'ai personnellement formaté tous les outils et codes que j'avais accumulés au cours de l'année écoulée. Aujourd'hui, je me suis souvenu d'un problème que j'ai rencontré dans un projet précédent et je l'ai enregistré aujourd'hui.

Lorsque j'optimisais la mémoire, j'ai rencontré des images difficiles à charger lors du chargement. J'ai trouvé des icônes de compétences d'une petite taille de 50x50, mais la taille des images était très grande, plusieurs mètres, j'ai donc trouvé. le chemin et j'ai trouvé Lors de la sortie des icônes sous forme d'art, j'ai oublié de les compresser et les icônes sont devenues très volumineuses, ce qui a entraîné un chargement non-stop.

Il y a des milliers de fichiers artistiques dans le projet, et c'est vraiment un travail physique de trouver les problèmes un par un. J'ai utilisé mon temps libre pour essayer l'API du système de fichiers nodejs et j'ai écrit une petite démo pour répondre aux besoins. besoins, a rapidement trouvé le problème et a demandé à l'artiste de corriger l'image problématique. Résolvez le problème de cette façon.

Il est très pratique de compter la taille de ce fichier. Le front-end peut compter ces images et compresser des images plus volumineuses de manière ciblée. Parce qu’avoir une donnée comme référence permet de trouver facilement des problèmes.

Ce qui suit utilise nodejs pour parcourir le contenu du fichier du dossier, lire tous les fichiers et les afficher dans l'ordre du plus grand au plus petit, et enfin générer un fichier qui a été trié. Vous pouvez voir si ces fichiers contiennent des fichiers.

var fs = require('fs')


//遍历文件夹,获取所有文件夹里面的文件信息
/*
 * @param path 路径
 *
 */

function geFileList(path)
{
 var filesList = [];
 readFile(path,filesList);
 return filesList;
}

//遍历读取文件
function readFile(path,filesList)
{
 files = fs.readdirSync(path);//需要用到同步读取
 files.forEach(walk);
 function walk(file)
 { 
  states = fs.statSync(path+'/'+file);   
  if(states.isDirectory())
  {
   readFile(path+'/'+file,filesList);
  }
  else
  { 
   //创建一个对象保存信息
   var obj = new Object();
   obj.size = states.size;//文件大小,以字节为单位
   obj.name = file;//文件名
   obj.path = path+'/'+file; //文件绝对路径
   filesList.push(obj);
  }  
 }
}

//写入文件utf-8格式
function writeFile(fileName,data)
{ 
 fs.writeFile(fileName,data,'utf-8',complete);
 function complete()
 {
  console.log("文件生成成功");
 } 
}


var filesList = geFileList("G:/nodejs");
filesList.sort(sortHandler);
function sortHandler(a,b)
{
 if(a.size > b.size)
 return -1;
 else if(a.size < b.size) return 1
 return 0;
}
var str='';
for(var i=0;i<filesList.length;i++)
{
 var item = filesList[i];
 var desc ="文件名:"+item.name + " "
  +"大小:"+(item.size/1024).toFixed(2) +"/kb"+" "
  +"路径:"+item.path;
 str+=desc +"\n"
}


writeFile("test.txt",str);

Copier après la connexion


L'utilisation est très simple : var filesList = geFileList("G:/nodejs"); modifiez les paramètres de getFileList par le chemin souhaité et modifiez le chemin du paramètre à l'intérieur, c'est-à-dire que vous pouvez parcourir les fichiers du dossier et générer un fichier.

Lorsqu'il y a de nombreux fichiers, il est recommandé d'utiliser un éditeur de texte plus puissant pour une lecture plus facile.

Voici les tailles de fichiers

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal