উত্তর:
ব্যবহার ioutil.ReadFile
:
func ReadFile(filename string) ([]byte, error)
ReadFile ফাইলের নাম অনুসারে ফাইলটি পড়ে এবং সামগ্রীগুলি ফেরত দেয় returns একটি সফল কল ত্রুটিযুক্ত == শূন্য নয়, ত্রুটিযুক্ত নয় == ইওএফ। রিডফাইলে পুরো ফাইলটি পড়ার কারণে এটি পড়ার কোনও ইওএফকে প্রতিবেদন করা ত্রুটি হিসাবে বিবেচনা করে না।
আপনি একটি এর []byte
পরিবর্তে পাবেন string
। এটি সত্যই প্রয়োজনে রূপান্তর করা যেতে পারে :
s := string(buf)
যদি আপনি কেবল সামগ্রীটি চান string
তবে সহজ সমাধানটি হ'ল প্যাকেজ ReadFile
থেকে ফাংশনটি ব্যবহার করা io/ioutil
। এই ফাংশনটি এমন একটি স্লাইস দেয় bytes
যা আপনি সহজেই এ রূপান্তর করতে পারেন string
।
package main
import (
"fmt"
"io/ioutil"
)
func main() {
b, err := ioutil.ReadFile("file.txt") // just pass the file name
if err != nil {
fmt.Print(err)
}
fmt.Println(b) // print the content as 'bytes'
str := string(b) // convert content to a 'string'
fmt.Println(str) // print the content as a 'string'
}
আমি মনে করি যে করণীয় সেরা, যদি আপনি এই সমস্ত ফাইলের সাথে যুক্ত হওয়ার দক্ষতা সম্পর্কে সত্যই উদ্বিগ্ন হন তবে সেগুলি একই বাইট বাফারে অনুলিপি করা।
buf := bytes.NewBuffer(nil)
for _, filename := range filenames {
f, _ := os.Open(filename) // Error handling elided for brevity.
io.Copy(buf, f) // Error handling elided for brevity.
f.Close()
}
s := string(buf.Bytes())
এটি প্রতিটি ফাইল খোলে, এর বিষয়বস্তুগুলিকে বুফে অনুলিপি করে তারপরে ফাইলটি বন্ধ করে দেয়। আপনার পরিস্থিতির উপর নির্ভর করে আপনার এটিকে রূপান্তর করার দরকার নেই, শেষ লাইনটি কেবল এটি দেখানোর জন্য যে buf.Bytes () এর কাছে আপনার সন্ধান করা ডেটা রয়েছে।
আমি কম্পিউটারের সাথে নেই, তাই আমি একটি খসড়া লিখি। আমি যা বলি তা আপনি পরিষ্কার করতে পারেন।
func main(){
const dir = "/etc/"
filesInfo, e := ioutil.ReadDir(dir)
var fileNames = make([]string, 0, 10)
for i,v:=range filesInfo{
if !v.IsDir() {
fileNames = append(fileNames, v.Name())
}
}
var fileNumber = len(fileNames)
var contents = make([]string, fileNumber, 10)
wg := sync.WaitGroup{}
wg.Add(fileNumber)
for i,_:=range content {
go func(i int){
defer wg.Done()
buf,e := ioutil.Readfile(fmt.Printf("%s/%s", dir, fileName[i]))
defer file.Close()
content[i] = string(buf)
}(i)
}
wg.Wait()
}