เพื่อนร่วมงานคนก่อนของฉันเขียนเครื่องมือ แต่มีข้อผิดพลาดนั่นคือหลังจากแทนที่ไฟล์รูปแบบของไฟล์ต้นฉบับกลายเป็น UTF8 BOM XML ประเภทนี้ที่มี BOM อาจไม่สามารถอ่านได้บน Mac ดังนั้นฉันต้องเขียนเครื่องมือเพื่อจัดการกับมัน
ในความเป็นจริงความคิดนั้นค่อนข้างง่าย ขั้นแรกให้วนซ้ำผ่านไดเรกทอรีจากนั้นอ่านไดเรกทอรีลบสามไบต์แรกของไฟล์และบันทึกเป็นไฟล์ในรูปแบบ UTF-8 เพียงป้อนรหัส :)
การคัดลอกรหัสมีดังนี้:
var fs = ต้องการ ('fs');
var path = "เส้นทางเป้าหมาย ... ";
ฟังก์ชั่น readdirectory (dirpath) {
if (fs.existssync (dirpath)) {
var files = fs.readdirsync (dirpath);
files.foreach (ฟังก์ชั่น (ไฟล์) {
var filePath = dirpath + "/" + ไฟล์;
var stats = fs.statsync (filepath);
if (stats.isdirectory ()) {
console.log ('/n อ่านไดเรกทอรี:/n', filepath, "/n");
ReadDirectory (FilePath);
} อื่นถ้า (stats.isfile ()) {
var buff = fs.readfilesync (filepath);
if (buff [0] .ToString (16) .ToLowerCase () == "ef" && buff [1] .ToString (16) .ToLowerCase () == "bb" && buff [2] .toString (16)
// ef bb bf 239 187 191
console.log ('/ค้นพบไฟล์ bom:', filepath, "/n");
buff = buff.slice (3);
fs.writefile (filepath, buff.toString (), "utf8");
-
-
-
} อื่น {
console.log ('ไม่พบเส้นทาง:', dirpath);
-
-
ReadDirectory (เส้นทาง);