মূল লেখায় যান

std.fs

API summary (generated from the Beans source by npm run coverage): 7 package functions.

std.fs এক-কলে পুরো ফাইল পড়া বা লেখার helper দেয়। ভেতরে ভেতরে এটা একটা File খোলে, কাজটা করে, আর বন্ধ করে দেয়। সোর্স পড়ুন stdlib/std/fs/fs.b-তে।

প্রতিটা function একটা Result ফেরত দেয়, কারণ filesystem-এর কাজ ফেল করতে পারে। error উপরে পাঠাতে ? ব্যবহার করুন।

import std.fs
pub fn read_bytes(path: string) -> Result<Bytes>
pub fn read(path: string) -> Result<string>
  • read_bytes ফাইলটা খোলে, offset 0 থেকে পুরোটা পড়ে, আর bytes ফেরত দেয়।
  • read একই কাজ করে আর তার ফেরত দেওয়া string-টা সরাসরি ভরে দেয়। এটা মাঝখানে কোনো Bytes value বানায় না।
pub fn write_bytes(path: string, data: Bytes) -> Result<int>
pub fn write(path: string, data: string) -> Result<int>
pub fn append_bytes(path: string, data: Bytes) -> Result<int>
pub fn append(path: string, data: string) -> Result<int>
pub fn copy(from: string, to: string) -> Result<int>

পাঁচটাই কত byte লেখা হলো সেটা ফেরত দেয়।

  • write_bytes আর write ফাইলটা “create” মোডে খোলে, খালি করে ফেলে, আর position 0 থেকে লেখা শুরু করে। write একটা string নেয়; write_bytes Bytes নেয়। Text লেখার সময় সরাসরি string storage ব্যবহার হয়।
  • append_bytes আর append ফাইলটা “append” মোডে খোলে আর খালি না করে data-কে শেষে যোগ করে।
  • copy যেখানে পারে সেখানে প্ল্যাটফর্মের file-copy পথ ব্যবহার করে, নয়তো একটা fixed-size fallback। এটা পুরো সোর্স ফাইলকে কোনো Beans বাফারে ধরে রাখে না। একই-ফাইল বা hard-link কপি destination খালি হওয়ার আগেই ফেল করে।
import std.io
import std.fs
fn main() {
fs.write("greeting.txt", "hello\n").expect("write")
fs.append("greeting.txt", "again\n").expect("append")
let text: string = fs.read("greeting.txt").expect("read")
io.print(text) // hello / again
}
  • Files and mappingFile type, যখন positional আর cursor I/O-র জন্য আরও সূক্ষ্ম নিয়ন্ত্রণ লাগে।
  • std.path — এখানে যে path স্ট্রিং পাঠানো হয়, সেগুলো তৈরি করা।
  • std.reader — একবারে পুরোটা না পড়ে একটা ফাইল লাইন ধরে ধরে পড়া।