คำอธิบายวิธี:
อ่านข้อมูลไฟล์ตามตัวอธิบายไฟล์ที่ระบุ FD และเขียนไปยังวัตถุบัฟเฟอร์ที่ชี้ไปที่บัฟเฟอร์ มันให้อินเทอร์เฟซพื้นฐานมากกว่า ReadFile
วิธีนี้ไม่แนะนำให้อ่านไฟล์โดยทั่วไปเพราะคุณต้องจัดการบัฟเฟอร์และพอยน์เตอร์ไฟล์ด้วยตนเองโดยเฉพาะอย่างยิ่งเมื่อคุณไม่ทราบขนาดไฟล์ซึ่งอาจเป็นสิ่งที่ลำบากมาก
ไวยากรณ์:
การคัดลอกรหัสมีดังนี้:
fs.read (fd, บัฟเฟอร์, ออฟเซ็ต, ความยาว, ตำแหน่ง, [callback (err, bytesread, buffer)]))
เนื่องจากวิธีนี้เป็นของโมดูล FS จึงจำเป็นต้องแนะนำโมดูล FS ก่อนการใช้งาน (var fs = require ("FS"))
รับพารามิเตอร์:
fs file descriptor
บัฟเฟอร์ข้อมูลจะถูกเขียน
ออฟเซ็ตเขียนถึงออฟเซ็ตบัฟเฟอร์
ความยาว (จำนวนเต็ม) ระบุความยาวของไฟล์การอ่านไบต์
ตำแหน่ง (จำนวนเต็ม) ระบุตำแหน่งเริ่มต้นสำหรับการอ่านไฟล์ หากรายการนี้เป็นโมฆะข้อมูลจะถูกอ่านจากตำแหน่งของตัวชี้ไฟล์ปัจจุบัน
การโทรกลับผ่านพารามิเตอร์สามตัว Err, BytesRead และ Buffer
・ ข้อยกเว้นผิดพลาด
・ bytesRead: จำนวนไบต์อ่าน
・ บัฟเฟอร์: วัตถุบัฟเฟอร์
ตัวอย่าง:
การคัดลอกรหัสมีดังนี้:
var fs = ต้องการ ('fs');
fs.open ('123.txt', 'r', ฟังก์ชั่น (err, fd) {
ถ้า (err) {
console.error (err);
กลับ;
-
var buf = บัฟเฟอร์ใหม่ (8);
fs.read (fd, buf, 0, 8, null, ฟังก์ชั่น (err, bytesread, buffer) {
ถ้า (err) {
console.log (err);
กลับ;
-
console.log ('bytesread' +bytesRead);
console.log (บัฟเฟอร์);
-
-
ซอร์สโค้ด:
การคัดลอกรหัสมีดังนี้:
fs.read = function (fd, บัฟเฟอร์, ออฟเซ็ต, ความยาว, ตำแหน่ง, การโทรกลับ) {
if (! util.isbuffer (บัฟเฟอร์)) {
// legacy string interface (FD, ความยาว, ตำแหน่ง, การเข้ารหัส, การโทรกลับ)
var cb = อาร์กิวเมนต์ [4]
การเข้ารหัส = อาร์กิวเมนต์ [3];
assertencoding (การเข้ารหัส);
ตำแหน่ง = อาร์กิวเมนต์ [2];
ความยาว = อาร์กิวเมนต์ [1];
บัฟเฟอร์ = บัฟเฟอร์ใหม่ (ความยาว);
ชดเชย = 0;
callback = function (err, bytesread) {
ถ้า (! cb) กลับมา;
var str = (bytesread> 0)? buffer.toString (การเข้ารหัส, 0, bytesRead): '';
(CB) (err, str, bytesread);
-
-
wrapper ฟังก์ชั่น (err, bytesread) {
// เก็บข้อมูลอ้างอิงถึงบัฟเฟอร์เพื่อไม่ให้ GC'ed เร็วเกินไป
การโทรกลับ && callback (err, bytesread || 0, บัฟเฟอร์);
-
binding.read (fd, บัฟเฟอร์, ชดเชย, ความยาว, ตำแหน่ง, wrapper);
-