Rust में फ़ाइल सिस्टम के साथ काम करना: व्यावहारिक रूप से
Rust — एक आधुनिक सिस्टम भाषा है, जो डेवलपर को मेमोरी पर पूर्ण नियंत्रण देती है और साथ ही सुरक्षा की गारंटी देती है। फ़ाइल सिस्टम के साथ काम करना एक बुनियादी कार्य है जिसे लगभग किसी भी प्रोजेक्ट में हल करना पड़ता है। इस लेख में हम व्यावहारिक उदाहरणों के साथ फ़ाइलों को पढ़ने और लिखने, निर्देशिकाओं को प्रबंधित करने और कैटलॉग को ट्रैवर्स करने का तरीका समझेंगे। सभी उदाहरण Rust में लिखे गए हैं और उपयोग के लिए तैयार हैं।
मुख्य मॉड्यूल और संरचनाएँ
Rust में फ़ाइल सिस्टम के लिए मॉड्यूल std::fs (file system) और पथों के साथ काम करने के लिए std::path जिम्मेदार हैं। मुख्य प्रकार:
std::fs::File— एक खुली फ़ाइल का प्रतिनिधित्व करता है।std::fs::read_dir— निर्देशिका की सामग्री पर इटरेटर।std::path::Pathऔरstd::path::PathBuf— पथों के साथ काम करने के लिए।
मॉड्यूल को शामिल करना:
use std::fs;use std::path::Path;पूरी फ़ाइल पढ़ना
एक छोटी टेक्स्ट फ़ाइल पढ़ने का सबसे सरल तरीका fs::read_to_string फ़ंक्शन का उपयोग करना है। यह Result<String> लौटाता है।
use std::fs;
fn main() { let content = fs::read_to_string("example.txt") .expect("फ़ाइल पढ़ने में विफल"); println!("फ़ाइल की सामग्री:{}", content);}यदि फ़ाइल मौजूद नहीं है या एक्सेस अधिकार नहीं हैं, तो प्रोग्राम पैनिक के साथ समाप्त हो जाएगा। वास्तविक प्रोजेक्ट्स में त्रुटियों को संभालने के लिए match या ? ऑपरेटर का उपयोग करें।
पढ़ते समय त्रुटि प्रबंधन
use std::fs;
fn read_file(path: &str) -> Result<String, std::io::Error> { fs::read_to_string(path)}
fn main() { match read_file("config.txt") { Ok(data) => println!("{}", data), Err(e) => eprintln!("त्रुटि: {}", e), }}फ़ाइल में डेटा लिखना
लिखने के लिए fs::write (फ़ाइल को ओवरराइट करता है) या OpenOptions विकल्पों के साथ File बनाने का उपयोग किया जाता है।
स्ट्रिंग का सरल लेखन
use std::fs;
fn main() { let data = "Hello, Rust!"; fs::write("output.txt", data) .expect("फ़ाइल लिखने में विफल"); println!("फ़ाइल सफलतापूर्वक लिखी गई");}फ़ाइल के अंत में जोड़ना
use std::fs::OpenOptions;use std::io::Write;
fn main() { let mut file = OpenOptions::new() .append(true) .create(true) .open("log.txt") .expect("फ़ाइल खोलने में विफल");
writeln!(file, "{} - लॉग में लेखन", chrono::Local::now()) .expect("लिखने में विफल");}ध्यान दें: OpenOptions आपको मोड को लचीले ढंग से कॉन्फ़िगर करने की अनुमति देता है — निर्माण, ओवरराइट, जोड़ना, पढ़ना।
निर्देशिकाओं के साथ काम करना
फ़ोल्डर बनाना, हटाना और ट्रैवर्स करना सामान्य कार्य हैं। आइए उन पर विचार करें।
नई निर्देशिका बनाना
use std::fs;
fn main() { fs::create_dir("new_folder") .expect("फ़ोल्डर बनाने में विफल"); // नेस्टेड फ़ोल्डर बनाना (पुनरावर्ती रूप से) fs::create_dir_all("parent/child/grandchild") .expect("नेस्टेड फ़ोल्डर बनाने में विफल");}निर्देशिका हटाना
use std::fs;
fn main() { // केवल खाली फ़ोल्डर हटाना fs::remove_dir("empty_folder").ok(); // सभी सामग्री सहित पुनरावर्ती हटाना fs::remove_dir_all("temp_data") .expect("फ़ोल्डर हटाने में विफल");}remove_dir_all से सावधान रहें — यह सभी सामग्री को स्थायी रूप से हटा देता है।
कैटलॉग की सामग्री को ट्रैवर्स करना
निर्देशिका के अंदर फ़ाइलों और फ़ोल्डरों पर इटरेशन:
use std::fs;
fn main() { let entries = fs::read_dir(".") .expect("निर्देशिका पढ़ने में विफल");\