การเขียนข้อมูลไปยังไฟล์ข้อความใน Node.js [ซ้ำกัน]

ขณะนี้ฉันมีบล็อกโค้ดต่อไปนี้:

net = require('net');
var clients = [];

net.createServer(function(s) {

  clients.push(s);

  s.on('data', function (data) {
    clients.forEach(function(c) {
      c.write(data);
    });
    process.stdout.write(data);//write data to command window
  });

  s.on('end', function() {
    process.stdout.write("lost connection");
  });

}).listen(9876);

ซึ่งใช้ในการตั้งค่าคอมพิวเตอร์ Windows ของฉันเป็นเซิร์ฟเวอร์และรับข้อมูลจากคอมพิวเตอร์ Linux ของฉัน ขณะนี้กำลังเขียนข้อมูลไปยังหน้าต่างคำสั่ง ฉันต้องการเขียนข้อมูลลงในไฟล์ข้อความไปยังตำแหน่งเฉพาะ จะต้องทำอย่างไร?


person FWing    schedule 01.04.2014    source แหล่งที่มา
comment
โปรดทราบว่า Java ไม่เหมือนกับ JavaScript; Node.js เป็น JavaScript ฝั่งเซิร์ฟเวอร์   -  person dimo414    schedule 02.04.2014
comment
นั่นเป็นเหตุผลที่ฉันพูดในมือใหม่เกี่ยวกับเรื่องนี้ ฉันรู้เกี่ยวกับ java :(   -  person FWing    schedule 02.04.2014
comment
โชคดีที่ภาษาที่คุณทำงานอยู่คือ JavaScript คุณไม่จำเป็นต้องรู้อะไรเกี่ยวกับ Java เลย   -  person dimo414    schedule 02.04.2014


คำตอบ (2)


ใช้โมดูล fs เพื่อจัดการกับระบบไฟล์:

var net = require('net');
var fs = require('fs');
// ...snip
s.on('data', function (data) {
  clients.forEach(function(c) {
    c.write(data);
  });

  fs.writeFile('myFile.txt', data, function(err) {
    // Deal with possible error here.
  });
});
person SomeKittens    schedule 01.04.2014
comment
ตามค่าเริ่มต้น writeFile() จะเขียนทับสิ่งใดก็ตามที่มีอยู่ในไฟล์อยู่แล้ว ดังนั้นคำตอบนี้จะเหลือเฉพาะรายการ 'data' สุดท้ายไว้ในไฟล์เท่านั้น - person cybersam; 02.04.2014
comment
นั่นคือสิ่งที่ฉันต้องการจะทำ เขียนทับข้อมูล และปล่อยข้อมูลล่าสุดไว้ในไฟล์ข้อความเท่านั้น - person FWing; 02.04.2014
comment
อย่างไรก็ตาม ปัญหาที่ฉันมีในขณะนี้คือ ฉันไม่มีข้อผิดพลาดใดๆ แต่ฉันไม่สามารถจัดเก็บไฟล์ .txt ได้แม้จะมีฟังก์ชันการค้นหาของ windows :/ - person FWing; 02.04.2014
comment
@FWing ไฟล์ txt ควรอยู่ในไดเร็กทอรีที่คุณรัน node - person SomeKittens; 02.04.2014
comment
โอ้ ไม่เป็นไร ขอบคุณ ฉันเข้าใจแล้ว ไม่แน่ใจว่าทำไมฟังก์ชันการค้นหาถึงใช้งานไม่ได้ - person FWing; 02.04.2014
comment
ไม่มีปัญหา. อย่าลืมโหวต/ยอมรับ! - person SomeKittens; 02.04.2014

คุณควรอ่านการสนับสนุน ระบบไฟล์ใน node.js

วิธีการต่อไปนี้อาจเป็นวิธีที่ง่ายที่สุดในการทำสิ่งที่คุณต้องการ แต่ก็ไม่จำเป็นว่าจะมีประสิทธิภาพสูงสุดเสมอไป เนื่องจากเป็นวิธีการสร้าง/เปิด อัปเดต และปิดไฟล์ทุกครั้ง

function myWrite(data) {
    fs.appendFile('output.txt', data, function (err) {
      if (err) { /* Do whatever is appropriate if append fails*/ }
    });
}
person cybersam    schedule 01.04.2014
comment
ฉันต้องเตรียมตัวเมื่อพบข้อผิดพลาดหรือไม่? ฉันไม่รู้ว่าจะทำอย่างไร? - person FWing; 02.04.2014
comment
คุณสามารถส่งออกข้อผิดพลาดไปยังคอนโซลได้หากคุณไม่รู้ว่าต้องทำอะไรอีก ตัวอย่างเช่น: console.error(ไม่สามารถส่งออกข้อมูล ข้อมูล: %s ข้อผิดพลาด: %s ข้อมูล ข้อผิดพลาด); - person cybersam; 02.04.2014
comment
ปัญหาเดียวกันที่นี่ ฉันไม่มีข้อผิดพลาดใดๆ แต่ฉันหาไฟล์ของฉันไม่พบ ฉันไม่แน่ใจว่ารหัสใช้งานได้หรือไม่ - person FWing; 02.04.2014
comment
คุณสามารถระบุเส้นทางแบบเต็มของไฟล์ได้อย่างชัดเจน เพื่อให้คุณทราบว่าไฟล์ไปอยู่ที่ไหน - person cybersam; 02.04.2014
comment
ใช่ ฉันทำมันแล้ว ขอบคุณมาก! - person FWing; 02.04.2014
comment
ไดเร็กทอรีเริ่มต้นคือไดเร็กทอรีที่เก็บโค้ด node.js ของคุณ - person cybersam; 02.04.2014
comment
@FWing: ยินดีต้อนรับ! โปรดยอมรับคำตอบของฉันด้วยหากคุณตัดสินใจว่าคำตอบนั้นดีที่สุด ขอบคุณ. - person cybersam; 02.04.2014