Go में फ़ाइल सिस्टम के साथ कार्य: मूल बातों से लेकर उन्नत तकनीकों तक
Go (Golang) एक आधुनिक कम्पाइल्ड प्रोग्रामिंग भाषा है जो अपने प्रदर्शन, सरलता और फ़ाइल सिस्टम के साथ काम करने के लिए अंतर्निहित समर्थन के लिए जानी जाती है। फ़ाइलों और निर्देशिकाओं को कुशलतापूर्वक पढ़ना, लिखना, बनाना और प्रबंधित करना किसी भी Go डेवलपर के लिए एक प्रमुख कौशल है। इस लेख में, हम मानक लाइब्रेरी os, io/ioutil (Go 1.16 से os और io का उपयोग करने की अनुशंसा की जाती है) और path/filepath का उपयोग करके फ़ाइल सिस्टम के साथ बुनियादी संचालन पर विस्तार से चर्चा करेंगे। आप सीखेंगे कि फ़ाइलों को कैसे खोलें और बंद करें, डेटा कैसे पढ़ें और लिखें, निर्देशिकाओं के साथ कैसे काम करें और फ़ाइल ट्री को कैसे ट्रैवर्स करें।
1. मूल बातें: फ़ाइलें खोलना, पढ़ना और लिखना
Go में फ़ाइलों के साथ काम करना os पैकेज से शुरू होता है। फ़ाइल खोलने के लिए, os.Open (केवल पढ़ने के लिए) या os.OpenFile (मोड निर्दिष्ट करके पढ़ने और लिखने के लिए) फ़ंक्शन का उपयोग किया जाता है। काम पूरा होने के बाद, सिस्टम संसाधनों को मुक्त करने के लिए defer file.Close() के साथ फ़ाइल को बंद करना अनिवार्य है।
पूरी फ़ाइल पढ़ना
फ़ाइल पढ़ने का सबसे सरल तरीका os.ReadFile (Go 1.16 से उपलब्ध) का उपयोग करना है। यह बाइट्स का एक स्लाइस और एक त्रुटि लौटाता है।
package main
import ( "fmt" "os")
func main() { data, err := os.ReadFile("example.txt") if err != nil { fmt.Println("फ़ाइल पढ़ने में त्रुटि:", err) return } fmt.Println("फ़ाइल की सामग्री:") fmt.Println(string(data))}फ़ाइल में लिखना
फ़ाइल में डेटा लिखने के लिए os.WriteFile का उपयोग किया जाता है। यह फ़ाइल बनाता या ओवरराइट करता है।
package main
import ( "os")
func main() { content := []byte("नमस्ते, दुनिया!यह लिखने के लिए एक स्ट्रिंग है।") err := os.WriteFile("output.txt", content, 0644) if err != nil { panic(err) }}तीसरे आर्गुमेंट 0644 पर ध्यान दें। यह यूनिक्स-शैली में फ़ाइल एक्सेस अनुमतियाँ हैं (मालिक पढ़ और लिख सकता है, अन्य केवल पढ़ सकते हैं)।
बफर के साथ पढ़ना और लिखना
बड़ी फ़ाइलों या स्ट्रीम प्रोसेसिंग के लिए bufio का उपयोग करें:
package main
import ( "bufio" "fmt" "os")
func main() { file, err := os.Open("large.txt") if err != nil { panic(err) } defer file.Close()
scanner := bufio.NewScanner(file) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Println("स्कैनिंग में त्रुटि:", err) }}2. निर्देशिकाओं के साथ कार्य
Go निर्देशिकाओं को बनाने, हटाने और पढ़ने के लिए सुविधाजनक फ़ंक्शन प्रदान करता है। इनमें से अधिकांश os पैकेज में हैं।
निर्देशिका बनाना
एक निर्देशिका बनाने के लिए os.Mkdir का उपयोग करें, नेस्टेड निर्देशिकाओं के लिए os.MkdirAll का उपयोग करें।
package main
import ( "os")
func main() { // एक निर्देशिका बनाएं err := os.Mkdir("newdir", 0755) if err != nil { panic(err) }
// नेस्टेड निर्देशिकाएं बनाएं err = os.MkdirAll("path/to/nested/dir", 0755) if err != nil { panic(err) }}निर्देशिका की सामग्री पढ़ना
फ़ंक्शन os.ReadDir निर्देशिका में आइटम की सूची लौटाता है (Go 1.16 से)।
package main
import ( "fmt" "os")
func main() { entries, err := os.ReadDir(".") if err != nil { panic(err) }
for _, entry := range entries { fmt.Println(entry.Name(), entry.IsDir()) }}फ़ाइलें और निर्देशिकाएं हटाना
हटाने के लिए os.Remove (फ़ाइल या खाली निर्देशिका के लिए) और os.RemoveAl का उपयोग करें।