আপনি এটির জন্য বুফিও প্যাকেজটির সাহায্যে OS.File (যা io.Reader ইন্টারফেস প্রয়োগ করে ) ব্যবহার করতে পারেন । যাইহোক, এই প্যাকেজগুলি স্থির মেমরির ব্যবহারটি (ফাইল যত বড় হোক তা বিবেচনা করে) নিয়ে নির্মিত এবং বেশ দ্রুত।
দুর্ভাগ্যক্রমে এটি মেমরির মধ্যে পুরো ফাইলটি পড়া আরও জটিল করে তোলে। আপনি লাইন সীমা অতিক্রম করলে লাইনটির অংশগুলিতে যোগ দিতে আপনি বাইট ব্যবহার করতে পারেন B বাফার যাইহোক, আমি আপনাকে সরাসরি আপনার প্রকল্পে লাইন রিডারটি ব্যবহার করার চেষ্টা করার পরামর্শ দিচ্ছি (বিশেষত যদি না জানেন তবে টেক্সট ফাইলটি কত বড়!)। তবে ফাইলটি যদি ছোট হয় তবে নিম্নলিখিত উদাহরণটি আপনার পক্ষে যথেষ্ট:
package main
import (
"os"
"bufio"
"bytes"
"fmt"
)
func readLines(path string) (lines []string, err os.Error) {
var (
file *os.File
part []byte
prefix bool
)
if file, err = os.Open(path); err != nil {
return
}
reader := bufio.NewReader(file)
buffer := bytes.NewBuffer(make([]byte, 1024))
for {
if part, prefix, err = reader.ReadLine(); err != nil {
break
}
buffer.Write(part)
if !prefix {
lines = append(lines, buffer.String())
buffer.Reset()
}
}
if err == os.EOF {
err = nil
}
return
}
func main() {
lines, err := readLines("foo.txt")
if err != nil {
fmt.Println("Error: %s\n", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}
অন্য বিকল্পটি হ'ল io.ioutil.ReadAll ব্যবহার করে সম্পূর্ণ ফাইলটি একবারে পড়তে পারেন এবং পরে লাইন দ্বারা স্লাইসিং করতে পারেন। আমি কীভাবে ফাইলটিতে রেখাগুলি লিখতে হয় তার একটি সুস্পষ্ট উদাহরণ দিচ্ছি না, তবে এটি মূলত os.Create()
উদাহরণের (লোগো main()
) অনুরূপ একটি লুপ অনুসরণ করবে ।