Rust में फ़ाइल सिस्टम के साथ काम करना: व्यावहारिक रूप से
\n\nRust एक आधुनिक सिस्टम प्रोग्रामिंग भाषा है जो उच्च प्रदर्शन और मेमोरी सुरक्षा को जोड़ती है। हर डेवलपर के सामने आने वाली एक मुख्य चुनौती है फ़ाइल सिस्टम के साथ काम करना। इस लेख में, हम व्यावहारिक उदाहरणों के साथ समझेंगे कि Rust में फ़ाइलों को कैसे पढ़ें और लिखें, डायरेक्ट्रीज़ बनाएँ, एरर को हैंडल करें और अन्य फ़ाइल सिस्टम ऑपरेशन करें।
\n\nफ़ाइल सिस्टम के लिए मुख्य मॉड्यूल
\n\nRust में फ़ाइल सिस्टम से जुड़ा सारा काम स्टैंडर्ड लाइब्रेरी में केंद्रित है। मुख्य मॉड्यूल हैं:
\n\n- \n
std::fs— फ़ाइलों और डायरेक्ट्रीज़ के साथ काम करने के फंक्शन (पढ़ना, लिखना, बनाना, हटाना)। \n std::path— पथों के साथ काम करना (Path,PathBuf)। \n std::io— इनपुट-आउटपुट, जिसमेंReadऔरWriteट्रेट्स शामिल हैं। \n
शुरू करने के लिए, बस ज़रूरी मॉड्यूल को इम्पोर्ट करें:
\n\nuse std::fs;\nuse std::path::Path;\nuse std::io::prelude::*;\nuse std::fs::File;\n\nRust में फ़ाइलें पढ़ना
\n\nपूरी फ़ाइल को एक बार में पढ़ने का सबसे आसान तरीका है fs::read_to_string फंक्शन का उपयोग करना। यह Result<String> लौटाता है, जिससे एरर को आसानी से हैंडल किया जा सकता है।
use std::fs;\n\nfn main() {\n let file_path = "example.txt";\n \n match fs::read_to_string(file_path) {\n Ok(content) => println!("फ़ाइल की सामग्री:\\n{}", content),\n Err(e) => eprintln!("फ़ाइल पढ़ने में त्रुटि: {}", e),\n }\n}\n\nअगर आपको फ़ाइल को लाइन दर लाइन पढ़ना है (जैसे बड़ी फ़ाइलों के लिए), तो BufReader का उपयोग करें:
use std::fs::File;\nuse std::io::{BufRead, BufReader};\n\nfn main() {\n let file = File::open("example.txt").expect("फ़ाइल खोलने में विफल");\n let reader = BufReader::new(file);\n\n for line in reader.lines() {\n match line {\n Ok(content) => println!("{}", content),\n Err(e) => eprintln!("लाइन पढ़ने में त्रुटि: {}", e),\n }\n }\n}\n\nफ़ाइलों में डेटा लिखना
\n\nफ़ाइल में डेटा लिखने के लिए fs::write (स्ट्रिंग लिखने का सरल तरीका) या File::create के साथ write! या writeln! का उपयोग करें।
use std::fs;\n\nfn main() {\n let content = "नमस्ते, दुनिया!\\nयह लिखने के लिए एक लाइन है।";\n fs::write("output.txt", content).expect("फ़ाइल लिखने में त्रुटि");\n println!("फ़ाइल सफलतापूर्वक लिखी गई");\n}\n\nक्रमिक लेखन या डेटा जोड़ने के लिए OpenOptions का उपयोग करें:
use std::fs::OpenOptions;\nuse std::io::Write;\n\nfn main() {\n let mut file = OpenOptions::new()\n .append(true) // फ़ाइल में जोड़ना\n .create(true) // अगर मौजूद नहीं है तो बनाएँ\n .open("log.txt")\n .expect("फ़ाइल खोलने में विफल");\n\n writeln!(file, "लॉग में लिखा गया: {}", chrono::Local::now()).expect("लिखने में त्रुटि");\n}\n\nडायरेक्ट्रीज़ और पथों के साथ काम करना
\n\nRust डायरेक्ट्रीज़ बनाने, हटाने और उनमें घूमने के लिए सुविधाजनक साधन प्रदान करता है। आइए मुख्य ऑपरेशन देखें।
\n\nडायरेक्ट्री बनाना और हटाना
\n\nuse std::fs;\n\nfn main() {\n // एक डायरेक्ट्री बनाना\n fs::create_dir("new_folder").expect("डायरेक्ट्री बनाने में त्रुटि");\n \n // नेस्टेड डायरेक्ट्रीज़ बनाना (mkdir -p के समान)\n fs::create_dir_all("parent/child/grandchild").expect("नेस्टेड डायरेक्ट्री बनाने में त्रुटि");\n \n // खाली डायरेक्ट्री हटाना\n fs::remove_dir("new_folder").expect("डायरेक्ट्री हटाने में त्रुटि");\n \n // सभी सामग्री सहित डायरेक्ट्री हटाना\n fs::remove_dir_all("parent").expect("सामग्री सहित डायरेक्ट्री हटाने में त्रुटि");\n}\n\nडायरेक्ट्री की सामग्री देखना
\n\nडायरेक्ट्री में फ़ाइलों की सूची प्राप्त करने के लिए: