วิธีเริ่มต้นใช้งาน VUE3.0 อย่างรวดเร็ว: เข้าสู่
ใช้เพื่อประมวลผลพาธและไฟล์ และมีวิธีการมากมาย
ข้อกำหนดประการหนึ่งของคือการเชื่อมเส้นทางและชื่อไฟล์เข้าด้วยกัน
const basePath = '/ ผู้ใช้/ ทำไม' const filename = 'abc.txt'
จากนั้นจะมีคนใช้ string splicing เพื่อประกบกัน
const filePath = basePath + '/' + ชื่อไฟล์ console.log(filePath);
แม้ว่าจะไม่มีปัญหากับผลลัพธ์ดังกล่าว แต่เมื่อพิจารณาถึงระบบที่แตกต่างกัน ระบบ Windows สามารถใช้ หรือ \ หรือ / เป็นตัวคั่นเส้นทาง ในขณะที่ระบบปฏิบัติการ Unix ของ Mac OS และ Linux ใช้ / เป็น สัญลักษณ์ตัวแยกเส้นทาง
เพื่อแก้ไขปัญหาข้างต้น เราสามารถใช้ path.resolve เพื่อประกบเส้นทางได้
เส้นทาง const = ต้องการ ('เส้นทาง') const basePath = '/ ผู้ใช้/ ทำไม' ชื่อไฟล์ const = 'abc.txt' const filePath = path.resolve (basePath, ชื่อไฟล์) console.log(เส้นทางไฟล์);
const path = need('path') const filePath = '/User/haha/abc.txt' console.log(path.dirname(filePath)); console.log(path.basename(filePath)); console.log(path.extname(เส้นทางไฟล์));
หากเราต้องการประกบหลายเส้นทาง แต่ระบบปฏิบัติการที่แตกต่างกันอาจใช้ตัวคั่นที่แตกต่างกัน เราสามารถใช้ฟังก์ชัน path.join
เส้นทาง const = ต้องการ ('เส้นทาง') const basepath = '/ ผู้ใช้ / ฮ่าฮ่า' ชื่อไฟล์ const = 'abc.txt' const filePath = path.join (basepath, ชื่อไฟล์) console.log(เส้นทางไฟล์);
หากเราต้องการประกบไฟล์และโฟลเดอร์ เราสามารถใช้ path.resolve
const basepath = 'ผู้ใช้/ฮ่าฮ่า' ชื่อไฟล์ const = 'abc.txt'
Path.resolve และ path.join ยังสามารถใช้เพื่อเชื่อมต่อเส้นทางได้ ดังนั้นความแตกต่างคืออะไร
const basepath = '../ผู้ใช้/ฮ่าฮ่า' ชื่อไฟล์ const = './abc.txt' const othername = './haha.js' const filePath1 = path.join (basepath, ชื่อไฟล์, ชื่ออื่น ๆ ) console.log(filePath1); const filePath2 = path.resolve (basepath, ชื่อไฟล์, ชื่ออื่น ๆ ) console.log(filePath2);
เราจะเห็นความแตกต่าง
API ส่วนใหญ่ของระบบไฟล์ nodejsมีวิธีการทำงานสามวิธี:
การทำงานของไฟล์แบบซิงโครนัส: โค้ดจะถูกบล็อกและจะไม่ดำเนินการ
ฟังก์ชันการโทรกลับแบบอะซิงโครนัสต่อไป: โค้ดจะไม่ถูกบล็อกและจำเป็นต้องมีฟังก์ชันการโทรกลับ ส่งผ่านเมื่อได้รับผลลัพธ์ ฟังก์ชันการโทรกลับจะดำเนินการ
ไฟล์การดำเนินการสัญญาแบบอะซิงโครนัส: รหัสจะไม่ถูกบล็อก การดำเนินการวิธีการเรียกผ่าน fs.promises จะส่งคืนสัญญาซึ่งสามารถประมวลผลผ่านตอนนั้นและตรวจจับได้
วิธีที่ 1 การดำเนินการแบบซิงโครนัส: fs.statSync
const fs = need('fs') เส้นทางไฟล์ const = './abc.txt' ข้อมูล const = fs.statSync (เส้นทางไฟล์) console.log('โค้ดที่ต้องดำเนินการในภายหลัง'); console.log(ข้อมูล);
วิธีที่ 2 การดำเนินการแบบอะซิงโครนัส
fs.stat(filepath, (err, info) => { ถ้า (ผิดพลาด) { console.log(ผิดพลาด); กลับ - console.log(ข้อมูล); console.log(info.isFile()); // ตรวจสอบว่าเป็นไฟล์ console.log(info.isDirectory()); // ตรวจสอบว่าเป็นโฟลเดอร์}) console.log('โค้ดที่ต้องดำเนินการในภายหลัง');
วิธีที่สาม: สัญญา
fs.promises.stat(filepath).then(info => { console.log(ข้อมูล); }).catch(ผิดพลาด => { console.log(ผิดพลาด); - console.log('โค้ดที่จะดำเนินการในภายหลัง');โหนด
กำหนด ตัวอธิบายไฟล์ ตัวเลข ให้กับไฟล์ที่เปิดอยู่ทั้งหมด การดำเนินการของระบบไฟล์ทั้งหมดใช้ตัวอธิบายไฟล์เหล่านี้เพื่อระบุและติดตามไฟล์เฉพาะแต่ละไฟล์
fs.open() วิธีการใช้ในการจัดสรรตัวอธิบายไฟล์ใหม่ fd เมื่อจัดสรรแล้ว file descriptor จะสามารถใช้เพื่ออ่านข้อมูลจากไฟล์ เขียนข้อมูลลงในไฟล์ หรือขอข้อมูลเกี่ยวกับไฟล์ได้
const fs = ต้องการ ('fs') fs.open('./abc.txt', (ผิดพลาด, fd) => { ถ้า (ผิดพลาด) { console.log(ผิดพลาด); กลับ - // รับข้อมูลไฟล์ผ่านตัวอธิบายไฟล์ fs.fstat(fd, (err, info) => { console.log(ข้อมูล); - })
fs.readFile(path[, options], callback): อ่านเนื้อหาไฟล์
fs.writeFile(path[, options], callback): เขียนเนื้อหาลงในพารามิเตอร์
ตัวเลือกไฟล์:
flag: โหมดการเขียน
การเข้ารหัส:การเขียนไฟล์
การเข้ารหัสอักขระ
fs.writeFile('./abc.txt', content, {flag: "a"}, err => { console.log(ผิดพลาด); })
การอ่านไฟล์
fs.readFile('./abc.txt', (ผิดพลาด, data) => { console.log(ข้อมูล); })
หากไม่ได้กรอกการเข้ารหัส ผลลัพธ์บัฟเฟอร์ (ไบนารี) จะถูกส่งกลับ
fs.readFile('./abc.txt', {การเข้ารหัส: 'utf-8'}, (ผิดพลาด ข้อมูล) => { console.log(ข้อมูล); -
ใช้ fs.mkdir() หรือ fs.mkdirSync เพื่อสร้างโฟลเดอร์ใหม่
const fs = ต้องการ ('fs') //สร้างโฟลเดอร์ const dirname = './haha' ถ้า (! fs.existsSync (dirname)) { fs.mkdir(dirname, (ผิดพลาด) => { console.log(ผิดพลาด); - }
fs.readdir
fs.readdir(dirname, (err, files) => { console.log(ไฟล์); })
รับไฟล์ทั้งหมดในโฟลเดอร์ ขณะนี้ไดเร็กทอรีดังแสดงในรูปด้านล่าง คุณสามารถใช้การเรียกซ้ำได้
const fs = ต้องการ ('fs') เส้นทาง const = ต้องการ ('เส้นทาง') const dirname = './ฮ่าฮ่า' ฟังก์ชั่น getFiles (dirname) { fs.readdir(dirname, {withFileTypes: true}, (ผิดพลาด, ไฟล์) => { // console.log(ไฟล์); สำหรับ (ให้ไฟล์ของไฟล์) { // ตรวจสอบว่าเป็นโฟลเดอร์หรือไม่ if(file.isDirectory()) { const filepath = path.resolve (dirname, file.name) getFiles (เส้นทางไฟล์) } อื่น { console.log(ไฟล์.ชื่อ); - - - - getFiles(dirname)
คุณสามารถใช้ fs.rename เพื่อเปลี่ยนชื่อโฟลเดอร์ได้
fs.rename('./haha', './xixi', err => { console.log(ผิดพลาด); -