io মডিউল
ফাইল ও ডিরেক্টরি প্রিমিটিভ। প্রতিটি blocking কলের একটি async counterpart (*_async) আছে; খুব বড় ফাইলের জন্য streaming open_read / open_write ব্যবহার করুন।
import "io" as io;
io.write_file("greeting.txt", "Hello!");
print(io.read_file("greeting.txt"));
Sync ফাইল I/O
| ফাংশন | বর্ণনা |
|---|---|
io.read_file(path) → string | পুরো ফাইল একটি স্ট্রিং-এ পড়ুন। |
io.write_file(path, data) | ফাইল data দিয়ে ওভাররাইট করুন। |
io.append_file(path, data) | data অ্যাপেন্ড; না থাকলে তৈরি। |
Async ফাইল I/O
*_async ফাংশন একটি Future ফেরত দেয় — wait-এর সাথে ব্যবহার করুন।
| ফাংশন | বর্ণনা |
|---|---|
io.read_file_async(path) → Future<string> | Main thread-এর বাইরে পড়ে; বড় ফাইলের জন্য। |
io.write_file_async(path, data) → Future<null> | Main thread-এর বাইরে লেখে। |
function copy() {
var data = wait io.read_file_async("big.bin");
wait io.write_file_async("big.copy.bin", data);
}
Streaming
open_read / open_write এমন stream ফেরত দেয় যার read / write নিজেও Future-returning। নিচু-স্তরের কোডের জন্য callback-style পদ্ধতিগুলো native _io module-এ এখনো পাওয়া যায়।
| ফাংশন | বর্ণনা |
|---|---|
io.open_read(path) → stream | stream.read(size) → Future<chunk>; chunk == null মানে EOF। stream.close() sync। |
io.open_write(path) → stream | stream.write(data) → Future<null>। stream.close() sync — flush-এর জন্য কল করুন। |
Native _io (advanced)
Native module-টা _io নামেও উপলব্ধ — নিচু-স্তরের callback-style কোডের জন্য (lib ভেতরে এটা ব্যবহার করে)। সাধারণত import "io" ব্যবহার করুন।
মেটাডেটা
| ফাংশন | বর্ণনা |
|---|---|
io.exists(path) → bool | পাথ থাকলে true। |
io.is_file(path) → bool | |
io.is_dir(path) → bool | |
io.stat(path) → map | {bytes, mtime, is_file, is_dir}। অনুপস্থিত হলে throw। |
ডিরেক্টরি
| ফাংশন | বর্ণনা |
|---|---|
io.mkdir(path) | মধ্যবর্তী parents স্বয়ংক্রিয়ভাবে তৈরি। |
io.list_dir(path) → list | এন্ট্রি নাম (কোনো . / .. নেই)। |
io.remove(path) | ফাইল বা ডিরেক্টরি; ডিরেক্টরির জন্য recursive। |
io.rename(from, to) | |
io.copy_file(from, to) |
আরও দেখুন
path— ক্রস-প্ল্যাটফর্ম পাথ বানানো।- ফাইল ম্যানিপুলেশন টিউটোরিয়াল।