Go में फ़ाइल सिस्टम के साथ काम करना: एक व्यावहारिक मार्गदर्शिका

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go में फ़ाइल सिस्टम के साथ काम करना: एक व्यावहारिक मार्गदर्शिका



Go (Golang) एक आधुनिक कंपाइल की जाने वाली भाषा है जो सर्वर एप्लिकेशन, उपयोगिताओं और कमांड लाइन टूल बनाने के लिए बहुत उपयुक्त है। ऐसी परियोजनाओं में प्रमुख कार्यों में से एक फ़ाइल सिस्टम के साथ काम करना है। इस लेख में हम व्यावहारिक उदाहरणों पर चर्चा करेंगे: फ़ाइलों को खोलने और पढ़ने से लेकर निर्देशिकाओं को पुनरावर्ती रूप से ट्रैवर्स करने तक। सभी उदाहरण बिना किसी तृतीय-पक्ष लाइब्रेरी के शुद्ध Go में लिखे गए हैं।



मूल बातें: फ़ाइलों को खोलना, पढ़ना और लिखना



पैकेज os फ़ाइलों के साथ निम्न-स्तरीय कार्य के लिए फ़ंक्शन प्रदान करता है। फ़ाइल की पूरी सामग्री को मेमोरी में पढ़ने के लिए 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(string(data))}


फ़ाइल में डेटा लिखने के लिए os.WriteFile फ़ंक्शन मौजूद है। यदि फ़ाइल मौजूद नहीं है तो यह इसे बनाता है, या मौजूदा फ़ाइल को ओवरराइट करता है।



package main

import ( "fmt" "os")

func main() { content := []byte("Hello, Go!दूसरी पंक्ति") err := os.WriteFile("output.txt", content, 0644) if err != nil { fmt.Println("लिखने में त्रुटि:", err) return } fmt.Println("फ़ाइल सफलतापूर्वक लिखी गई")}


तीसरा तर्क 0644 यूनिक्स-शैली में एक्सेस अनुमतियाँ है (मालिक पढ़ और लिख सकता है, बाकी केवल पढ़ सकते हैं)। विंडोज़ में यह पैरामीटर आंशिक रूप से अनदेखा किया जाता है।



स्ट्रीमिंग रीड और राइट: बड़ी फ़ाइलों के साथ काम करना



बड़ी फ़ाइलों (कई मेगाबाइट से अधिक) के साथ काम करने के लिए उन्हें पूरी तरह से मेमोरी में लोड न करें। bufio या io पैकेज के माध्यम से बफ़र्ड रीडिंग का उपयोग करें।



package main

import ( "bufio" "fmt" "os")

func main() { file, err := os.Open("large_file.log") if err != nil { fmt.Println("खोलने में त्रुटि:", err) return } defer file.Close()

scanner := bufio.NewScanner(file) for scanner.Scan() { line := scanner.Text() // पंक्ति को प्रोसेस करें fmt.Println(line) }

if err := scanner.Err(); err != nil { fmt.Println("स्कैनिंग में त्रुटि:", err) }}


स्ट्रीमिंग राइट के लिए bufio.NewWriter का उपयोग करें:



package main

import ( "bufio" "fmt" "os")

func main() { file, err := os.Create("output_stream.txt") if err != nil { fmt.Println("बनाने में त्रुटि:", err) return } defer file.Close()

writer := bufio.NewWriter(file) for i := 0; i < 10; i++ { _, err := writer.WriteString(fmt.Sprintf("पंक्ति %d", i+1)) if err != nil { fmt.Println("लिखने में त्रुटि:", err) return } } writer.Flush() // महत्वपूर्ण: बफ़र को फ्लश करें fmt.Println("लेखन पूर्ण हुआ")}


विधि Flush() अनिवार्य है - इसके बिना डेटा बफ़र में रह सकता है और फ़ाइल में नहीं जा सकता।



निर्देशिकाओं के साथ काम करना: बनाना, हटाना और ट्रैवर्स करना



नई निर्देशिका बनाने के लिए os.Mkdir (एक फ़ोल्डर) या os.MkdirAll (पुनरावर्ती रूप से, mkdir -p की तरह) का उपयोग करें।



package main

import ( "fmt" "os")

func main() { // एक फ़ोल्डर बनाएँ err := os.Mkdir("new_folder", 0755) if err != nil { fmt.Println("फ़ोल्डर बनाने में त्रुटि:", err) }

// नेस्टेड संरचना बनाएँ err = os.MkdirAll("a/b/c/d", 0755) if err != nil { fmt.Println("नेस्टेड फ़ोल्डर बनाने में त्रुटि:", err) } else { fmt.Println("फ़ोल्डर बन गए") }}


निर्देशिका को हटाना os.Remove के माध्यम से किया जाता है (केवल प

ब्लॉग

पुस्तक अनुशंसाएँ