নোড.জেজে নতুন লাইনে কীভাবে যুক্ত হবে


96

আমি নোড.জেএস ব্যবহার করে লগ ফাইলটিতে ডেটা যুক্ত করার চেষ্টা করছি এবং এটি ভাল কাজ করছে তবে এটি পরবর্তী লাইনে যাচ্ছে না। \nনিচে আমার ফাংশনে কাজ করছে বলে মনে হচ্ছে না। কোনও পরামর্শ?

function processInput ( text ) 
{     
  fs.open('H://log.txt', 'a', 666, function( e, id ) {
   fs.write( id, text + "\n", null, 'utf8', function(){
    fs.close(id, function(){
     console.log('file is updated');
    });
   });
  });
 }

4
আপনি কি উইন্ডোজে আছেন / আপনার ফাইলটি দেখার জন্য একটি উইন্ডোজ-ভিত্তিক পাঠ্য সম্পাদক ব্যবহার করছেন, এবং এর জন্য কোনও সিআরএলএফ জোড়া দরকার \r\n?
ফ্রোগজ

উত্তর:


158

দেখে মনে হচ্ছে আপনি উইন্ডোজে এটি চালাচ্ছেন (আপনার H://log.txtফাইলের পাথ দেওয়া হয়েছে )।

ন্যায়বিচারের \r\nপরিবর্তে ব্যবহার করার চেষ্টা করুন \n

সত্যিই, \nভাল আছে; আপনি সম্ভবত নোটপ্যাডে লগ ফাইলটি দেখছেন বা অন্য কিছু যা উইন্ডোজবিহীন নিউলাইনগুলিকে রেন্ডার করে না। এটি অন্য দর্শকের / সম্পাদক (উদাঃ ওয়ার্ডপ্যাড) এ খোলার চেষ্টা করুন।


4
নোটপ্যাডে দেখা হচ্ছিল :)
ফেসপ্যাম

নোটপ্যাড ++ এ এফওয়াইআই আপনি ডায়ালগের নীচে নির্বাচিত "বর্ধিত" অনুসন্ধান মোডের সাহায্যে "\\ n" প্রতিস্থাপন "\\ n" পেতে পারেন।
ড্রিউ

95

পরিবর্তে os.EOL ধ্রুবক ব্যবহার করুন।

var os = require("os");

function processInput ( text ) 
{     
  fs.open('H://log.txt', 'a', 666, function( e, id ) {
   fs.write( id, text + os.EOL, null, 'utf8', function(){
    fs.close(id, function(){
     console.log('file is updated');
    });
   });
  });
 }

14
(১/২) দয়া করে নোট করুন যেহেতু নোড.জেএস বিভিন্ন পরিবেশে চলতে পারে, তাই আপনার অ্যাপ্লিকেশনটি এটি থেকে উইন্ডোজের পরিবেশটিকে একটি লিনাক্সে বলার সুযোগ থেকে সরিয়ে নেওয়া সম্ভব হতে পারে। এর অর্থ যদি আপনার অ্যাপ্লিকেশনটির লগগুলি সংযুক্ত করে থাকে তবে আপনার os.EOLকিছু লাইন শেষ হবে /r/n(উইন্ডোতে অ্যাপ্লিকেশন চলমান সময় থেকে) এবং তারপরে আপনার সারিগুলি ঠিক শেষ হবে /n(যখন অ্যাপটি লিনাক্সে চলবে)। এটিতে কিছু সমস্যা দেওয়ার সম্ভাবনা রয়েছে বিশেষত যদি লগ ফাইলগুলির কোনও স্বয়ংক্রিয়ভাবে পার্সিং হয়। আমি ঠিক ব্যবহার করার সিদ্ধান্ত নিয়েছে /n
শার্কি

4
(২/২) তবুও আমি আপনার উত্তরটিকে উজ্জীবিত করেছি কারণ এটি সঠিক হবে, যদি আমরা একটি নিখুঁত-নিয়ন্ত্রিত বিশ্বে বাস করি।
শার্কি

4
আমি লিনাক্স ব্যবহার করি তবে এই পদ্ধতিটি পছন্দ করেছি কারণ ভবিষ্যতে ব্যবহারের ক্ষেত্রে আমি পোর্টাবিলিটি চাই।
sdkks 1'16

4
এটি সর্বোত্তম উত্তর কারণ এটি ক্রসপ্ল্যাটফর্মে কাজ করে।
মাইক চেলেন

ঠিক আছে, আমাকে একটি বাইনারি ব্যবহার করে এমন একটি অ্যাপ্লিকেশন প্যাকেজ fs.writeকরতে os.EOLহয়েছিল। আমি pkgউইন্ডোজের জন্য বাইনারি তৈরি করতাম । যখন মৃত্যুদন্ড কার্যকর করা হয়, সর্বশেষ লিখিত রেকর্ডটিতে এটিতে একটি নতুন লাইন যুক্ত হয় (যেমনটি প্রত্যাশিত); তবে, মনে হয় অন্যান্য উইন্ডোজ অ্যাপ্লিকেশনগুলি এটির একটি নতুন রেকর্ড treat আমি প্রায় একটি কাজের জন্য শিকার করছি।
কোজিটোয়ারগোসাম

3

\r\nনোড জেএসে একটি নতুন লাইন যুক্ত করতে সংমিশ্রণটি ব্যবহার করুন

  var stream = fs.createWriteStream("udp-stream.log", {'flags': 'a'});
  stream.once('open', function(fd) {
    stream.write(msg+"\r\n");
  });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.