Bnlang এ ফাইল লেখা

io মডিউল রিড API-কে রাইট সাইডে মিরর করে:

  • io.write_file(path, data) — সিঙ্ক্রোনাস; ফাইল ওভাররাইট করে।
  • io.write_file_async(path, data, cb) — অ্যাসিঙ্ক্রোনাস; রাইট ডিউরেবল হলে কলব্যাক ফায়ার হয়।
  • io.append_file(path, data) — সিঙ্ক্রোনাস অ্যাপেন্ড (ফাইল না থাকলে তৈরি করে)।
  • io.open_write(path) — স্ট্রিমিং; এক একটা চাঙ্ক পুশ করুন।

Synchronous Write

সরলতম ফর্ম। বাইটগুলো ডিস্কে না যাওয়া পর্যন্ত ব্লক করে।

import "io" as io;

io.write_file("greeting.txt", "Hello from Bnlang!");
print("written");

Asynchronous Write

সাথে সাথে ফেরত আসে। ডাটা ডিউরেবল হলে কলব্যাক একটি এরর আর্গুমেন্ট-সহ ফায়ার হয় (সফল হলে null)।

import "io" as io;

io.write_file_async("greeting.txt", "Hello, async!", function (err) {
    if (err != null) {
        print("write failed:", err);
        return;
    }
    print("written");
});
print("scheduled");

Appending

লগ ফাইল ও জমা হওয়া আউটপুটের জন্য io.append_file ব্যবহার করুন — এটি ট্রাঙ্কেট করে না, প্রয়োজন হলে ফাইল তৈরি করে।

import "io" as io;

io.append_file("app.log", "started up\n");
io.append_file("app.log", "ready\n");

Streaming Large Outputs

যখন আউটপুট মেমরিতে আঁটে না (অথবা আপনি বাফার করতে চান না), একটি রাইট স্ট্রিম খুলুন এবং চাঙ্ক পুশ করুন। স্ট্রিম close() করতে ভুলবেন না — এটাই শেষ বাইটগুলো ডিস্কে ফ্লাশ করে।

import "io" as io;

var sink = io.open_write("report.csv");

sink.write("id,name\n",   function (err) { /* ... */ });
sink.write("1,Alice\n",   function (err) { /* ... */ });
sink.write("2,Bob\n",     function (err) { /* ... */ });

sink.close(function (err) {
    if (err != null) { print("close failed:", err); return; }
    print("report written");
});

Best Practices

  • দীর্ঘ-চলা প্রোগ্রামে async ভ্যারিয়েন্ট ব্যবহার করুন; sync শুধু স্ক্রিপ্ট ও একবারের কাজে।
  • একই পাথে কনকারেন্ট write_file কল মিশাবেন না — এরা একে অপরকে ওভাররাইট করে।
  • স্ট্রিমিং রাইটে সবসময় close() কল করুন, এবং ডাটা ডিউরেবল কিনা কনফার্ম করতে এর কলব্যাক ব্যবহার করুন।
  • ওভাররাইটে সতর্ক থাকুন: write_file জিজ্ঞেস না করেই ট্রাঙ্কেট করে। এটা চিন্তার বিষয় হলে আগে io.exists দিয়ে চেক করুন।