ফাইল থেকে ডেটা পড়া এবং লেখা

File Handling (ফাইল হ্যান্ডলিং) - গো প্রোগ্রামিং (Go Programming) - Computer Programming

232

Go-তে ফাইল থেকে ডেটা পড়া এবং লেখা

Go প্রোগ্রামিং ভাষায় ফাইলের সাথে কাজ করার জন্য কিছু স্ট্যান্ডার্ড লাইব্রেরি রয়েছে যা ফাইল পড়া এবং লেখার জন্য ব্যবহৃত হয়। প্রধান লাইব্রেরিটি হল os এবং io/ioutil (Go 1.16 থেকে io/ioutil অনেক ফাংশন os এবং io প্যাকেজে স্থানান্তরিত করা হয়েছে)। Go তে ফাইলের সাথে ডেটা পড়া এবং লেখা সহজ এবং কার্যকর।


১. ফাইল থেকে ডেটা পড়া

Go-তে ফাইল থেকে ডেটা পড়ার জন্য প্রথমে আপনাকে ফাইলটি ওপেন করতে হয় এবং তারপর তার কনটেন্ট পড়তে হয়। এটি os.Open() অথবা os.OpenFile() ব্যবহার করে করা যায়।

১.১ ফাইল থেকে ডেটা পড়া উদাহরণ

package main

import (
    "fmt"
    "os"
)

func main() {
    // ফাইল খোলা (ডিফল্ট রিড মোডে)
    file, err := os.Open("example.txt")  // এখানে 'example.txt' ফাইলটির পথ উল্লেখ করুন
    if err != nil {
        fmt.Println("Error opening file:", err)
        return
    }
    defer file.Close()  // ফাইল বন্ধ করা

    // ফাইল থেকে ডেটা পড়া
    var content []byte
    _, err = file.Read(content) // ফাইলের কনটেন্ট পড়া
    if err != nil {
        fmt.Println("Error reading file:", err)
        return
    }

    fmt.Println(string(content)) // ফাইলের কনটেন্ট প্রিন্ট করা
}

এখানে, os.Open() ব্যবহার করে আমরা একটি ফাইল ওপেন করেছি এবং তারপরে file.Read() ফাংশন ব্যবহার করে ফাইলের কনটেন্ট পড়েছি। তারপর আমরা defer file.Close() ব্যবহার করে ফাইলটি ক্লোজ করেছি।

১.২ ফাইলের সম্পূর্ণ কনটেন্ট পড়া

package main

import (
    "fmt"
    "io/ioutil"
    "log"
)

func main() {
    // ioutil.ReadFile() ব্যবহার করে ফাইলের পুরো কনটেন্ট পড়া
    content, err := ioutil.ReadFile("example.txt")
    if err != nil {
        log.Fatal(err)
    }

    // ফাইলের কনটেন্ট প্রিন্ট করা
    fmt.Println(string(content))
}

এখানে, ioutil.ReadFile() ব্যবহার করে ফাইলের পুরো কনটেন্ট একসাথে পড়া হয়েছে। এটি ফাইলের ডেটা একটি স্লাইস (slice) আকারে রিটার্ন করে।


২. ফাইল লেখা

ফাইল লেখার জন্য Go তে os.Create() অথবা os.OpenFile() ফাংশন ব্যবহার করা হয়। এটি ব্যবহার করে আপনি নতুন ফাইল তৈরি করতে বা একটি বিদ্যমান ফাইলে ডেটা লিখতে পারেন।

২.১ নতুন ফাইলে ডেটা লেখা

package main

import (
    "fmt"
    "os"
)

func main() {
    // নতুন ফাইল তৈরি করা
    file, err := os.Create("newfile.txt")
    if err != nil {
        fmt.Println("Error creating file:", err)
        return
    }
    defer file.Close() // ফাইল বন্ধ করা

    // ফাইলে লেখা
    content := []byte("Hello, Go! This is written to a new file.")
    _, err = file.Write(content)
    if err != nil {
        fmt.Println("Error writing to file:", err)
        return
    }

    fmt.Println("Data written to file successfully.")
}

এখানে, os.Create() ব্যবহার করে একটি নতুন ফাইল তৈরি করা হয়েছে এবং তার মধ্যে ডেটা লেখা হয়েছে। defer file.Close() দিয়ে ফাইলটি বন্ধ করা হয়েছে।

২.২ বিদ্যমান ফাইলে ডেটা লেখা

package main

import (
    "fmt"
    "os"
)

func main() {
    // বিদ্যমান ফাইল ওপেন করা (অ্যাড অপশন সহ)
    file, err := os.OpenFile("existingfile.txt", os.O_APPEND|os.O_WRONLY, 0644)
    if err != nil {
        fmt.Println("Error opening file:", err)
        return
    }
    defer file.Close()

    // ফাইলে লেখা
    content := []byte("Adding more data to the existing file.\n")
    _, err = file.Write(content)
    if err != nil {
        fmt.Println("Error writing to file:", err)
        return
    }

    fmt.Println("Data added to the existing file successfully.")
}

এখানে, os.OpenFile() ব্যবহার করে একটি বিদ্যমান ফাইল খোলা হয়েছে এবং তার শেষে ডেটা অ্যাড করা হয়েছে (os.O_APPEND ফ্ল্যাগ ব্যবহার করে)। এটি বিদ্যমান ফাইলের মধ্যে নতুন ডেটা যোগ করবে।


৩. ফাইলের মধ্যে লাইন বাই লাইন লেখা ও পড়া

ফাইলের মধ্যে লাইন বাই লাইন ডেটা পড়া এবং লেখা বেশ কার্যকরী হতে পারে, বিশেষ করে যখন ফাইলের আকার বড় হয়।

৩.১ ফাইল থেকে লাইন বাই লাইন ডেটা পড়া

package main

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

func main() {
    file, err := os.Open("example.txt")
    if err != nil {
        fmt.Println("Error opening file:", err)
        return
    }
    defer file.Close()

    // bufio.Scanner ব্যবহার করে ফাইল থেকে লাইন বাই লাইন পড়া
    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        fmt.Println(scanner.Text()) // প্রতিটি লাইনের কনটেন্ট প্রিন্ট করা
    }

    if err := scanner.Err(); err != nil {
        fmt.Println("Error reading file:", err)
    }
}

এখানে, bufio.NewScanner() ব্যবহার করে ফাইলের প্রতিটি লাইন পড়া হচ্ছে।

৩.২ ফাইলে লাইন বাই লাইন লেখা

package main

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

func main() {
    // নতুন ফাইল তৈরি বা ওপেন করা
    file, err := os.Create("newfile.txt")
    if err != nil {
        fmt.Println("Error creating file:", err)
        return
    }
    defer file.Close()

    // bufio.Writer ব্যবহার করে লাইন বাই লাইন লেখা
    writer := bufio.NewWriter(file)

    _, err = writer.WriteString("This is the first line.\n")
    if err != nil {
        fmt.Println("Error writing to file:", err)
        return
    }

    _, err = writer.WriteString("This is the second line.\n")
    if err != nil {
        fmt.Println("Error writing to file:", err)
        return
    }

    // ডেটা ফাইলের মধ্যে ফ্লাশ করা
    writer.Flush()

    fmt.Println("Data written to file successfully.")
}

এখানে, bufio.NewWriter() ব্যবহার করে ফাইলে লাইন বাই লাইন লেখা হচ্ছে এবং Flush() মেথড ব্যবহার করে ডেটা ফাইলের মধ্যে লেখার পর তা ফ্লাশ করা হচ্ছে।


৪. Error Handling in File Operations

ফাইল অপারেশনের সময় ত্রুটি হওয়া সাধারণ একটি বিষয়। Go তে error handling প্রক্রিয়া খুবই সোজা, যেখানে আপনি error চেক করে সঠিক পদক্ষেপ নিতে পারেন।

package main

import (
    "fmt"
    "os"
)

func main() {
    // ফাইল ওপেন করা
    file, err := os.Open("example.txt")
    if err != nil {
        fmt.Println("Error opening file:", err)
        return
    }
    defer file.Close()

    // ফাইলের সাথে কাজ করা...
}

এখানে, ফাইল ওপেন করার সময় যদি কোনো ত্রুটি ঘটে, তাহলে তা err ভেরিয়েবল দ্বারা ধরা হবে এবং আমরা সেই ত্রুটি মেসেজ প্রিন্ট করব।


সারসংক্ষেপ

  • ফাইল পড়া: Go তে os.Open() বা ioutil.ReadFile() ব্যবহার করে ফাইলের কনটেন্ট পড়া হয়। এরপরে file.Read() বা scanner.Text() দিয়ে লাইন বাই লাইন পড়া যায়।
  • ফাইলে লেখা: os.Create() বা os.OpenFile() দিয়ে ফাইল তৈরি বা ওপেন করা হয়, এবং file.Write() অথবা bufio.Writer ব্যবহার করে ফাইলে ডেটা লেখা হয়।
  • Error Handling: Go তে ফাইল অপারেশন করার সময় ত্রুটি চেক করা এবং ত্রুটির মোকাবিলা করা একটি সাধারণ পদ্ধতি।

Go তে ফাইল ম্যানিপুলেশনের জন্য স্ট্যান্ডার্ড লাইব্রেরি এবং বিভিন্ন ফাংশন ব্যবহারের মাধ্যমে ডেটা পড়া এবং লেখা সহজভাবে করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...