Sudah lebih 2 bulan sejak saya meninggalkan syarikat saya menulis banyak alatan sebelum ini, tetapi pada hari saya meninggalkan syarikat itu, saya secara peribadi memformat semua alatan dan kod yang telah saya kumpulkan sepanjang tahun lalu. Hari ini saya teringat masalah yang saya hadapi dalam projek sebelumnya dan merekodkannya hari ini.
Semasa saya mengoptimumkan memori, saya menemui beberapa gambar yang sukar dimuatkan semasa memuatkan saya menjumpai beberapa ikon kemahiran dengan saiz kecil 50x50, tetapi saiz gambar itu sangat besar, beberapa meter, jadi saya dapati. laluan dan dijumpai Apabila mengeluarkan ikon sebagai seni, saya terlupa untuk memampatkannya dan ikon menjadi sangat besar, yang mengakibatkan pemuatan tanpa henti.
Terdapat beribu-ribu fail seni dalam projek itu, dan ini adalah tugas fizikal untuk mencari masalah satu persatu. Saya menggunakan masa lapang saya untuk mencuba API sistem fail nodejs dan menulis demo kecil untuk memenuhinya keperluan, cepat menemui masalah, dan memberitahu artis untuk membetulkan gambar yang bermasalah. Selesaikan masalah dengan cara ini.
Sangat praktikal untuk mengira saiz fail ini Bahagian hadapan boleh mengira gambar ini dan memampatkan gambar yang lebih besar dengan cara yang disasarkan. Kerana mempunyai data sebagai rujukan memudahkan untuk mencari masalah.
Yang berikut menggunakan nodejs untuk melintasi kandungan fail folder, membaca semua fail dan mengeluarkannya mengikut tertib daripada besar ke kecil, dan akhirnya menjana fail, yang telah diisih. Anda boleh melihat sama ada fail tersebut mempunyai fail.
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);
Penggunaannya sangat mudah: var filesList = geFileList("G:/nodejs"); menukar parameter getFileList ke laluan yang anda mahu, dan menukar laluan parameter di dalam, iaitu, anda boleh melintasi fail dalam folder dan menjana sebuah fail.
Apabila terdapat banyak fail, adalah disyorkan untuk menggunakan penyunting teks yang lebih berkuasa untuk bacaan yang lebih mudah.
Berikut ialah saiz fail