ホームページ > 記事 > ウェブフロントエンド > nodejs はフォルダーの走査とファイル サイズのカウントを実装します_node.js
会社を辞めてから2ヶ月以上が経ちましたが、以前はたくさんのツールを書いていましたが、会社を辞めた日に、この1年間に蓄積したすべてのツールとコードを個人的にフォーマットしました。今日は以前のプロジェクトで遭遇した問題を思い出し、今日記録しました。
メモリを最適化しているときに、50x50の小さなサイズのスキルアイコンをいくつか見つけましたが、画像のサイズが数メートルと非常に大きかったので、ロードするのが難しい画像がいくつかありました。アイコンをアートとして出力する際、圧縮するのを忘れてアイコンが非常に大きくなり、ロードが止まらなくなりました。
プロジェクトには何千ものアート ファイルがあり、問題を 1 つずつ見つけるのは非常に大変な作業です。空き時間を利用して、nodejs ファイル システムの API を試し、要件を満たす小さなデモを作成しました。が必要で、すぐに問題を発見し、アーティストに問題のある絵を修正するように言いました。このようにして問題を解決してください。
このファイルのサイズをカウントすることは、フロントエンドでこれらの画像をカウントし、目的を絞った方法で大きな画像を圧縮することが非常に実用的です。参考となるデータがあると問題を見つけやすくなるからです。
以下では、nodejs を使用してフォルダー ファイルの内容を走査し、すべてのファイルを読み取り、大きいものから小さいものへ順に出力し、最後にソートされたファイルを生成します。それらのファイルにファイルがあるかどうかを確認できます。
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);
使い方は非常に簡単です: var filesList = geFileList(“G:/nodejs”); getFileList のパラメータを希望のパスに変更し、内部のパラメータのパスを変更します。つまり、フォルダ内のファイルを走査して生成できます。ファイル。
ファイルが多い場合は、読みやすくするために、より強力なテキスト エディタを使用することをお勧めします。
ファイルサイズは次のとおりです