আমি একটি স্থানীয় ফাইল খুলতে এবং একটি ফিরে চাই io.Reader। কারণটি হ'ল আমি যে io.Readerলাইব্রেরিটি ব্যবহার করছি তার জন্য আমাকে একটি খাওয়ানো দরকার , যেমন:
func read(r io.Reader) (results []string) {
}
আমি একটি স্থানীয় ফাইল খুলতে এবং একটি ফিরে চাই io.Reader। কারণটি হ'ল আমি যে io.Readerলাইব্রেরিটি ব্যবহার করছি তার জন্য আমাকে একটি খাওয়ানো দরকার , যেমন:
func read(r io.Reader) (results []string) {
}
উত্তর:
os.Open ফেরত একটি io.Reader
http://play.golang.org/p/BskGT09kxL
package main
import (
"fmt"
"io"
"os"
)
var _ io.Reader = (*os.File)(nil)
func main() {
fmt.Println("Hello, playground")
}
nilনির্দেশ করতে সঠিক টাইপের একটি পয়েন্টার os.File। (এই ক্ষেত্রে, আপনি এর মাধ্যমে সত্যই কিছু করতে পারবেন না)) এবং var _ io.Reader = (*os.File)(nil)অ্যাসাইনমেন্টটি সংকলকটি পরীক্ষা করে তোলে যে *os.Fileএটি একটি io.Reader(বা অন্যথায় অ্যাসাইনমেন্টটি বৈধ হবে না)। আপনি যদি খেলার মাঠে যান এবং পরিবর্তিত *os.Fileহন তবে *os.Processআপনি ইন্টারফেসটি সন্তুষ্ট না করে এমন জিনিসগুলির জন্য উত্পন্ন ত্রুটিটি দেখতে পাবেন।
func (f *File) Read(b []byte) (n int, err error), একই হিসাবে Reader।
Os.Open () ব্যবহার করুন :
func ওপেন (নামের স্ট্রিং) (ফাইল * ফাইল, ভুল ত্রুটি)
ওপেন পড়ার জন্য নামকৃত ফাইলটি খুলবে। যদি সফল হয় তবে ফিরে আসা ফাইলের পদ্ধতিগুলি পড়ার জন্য ব্যবহার করা যেতে পারে; সম্পর্কিত ফাইল বর্ণনাকারীর মোড O_RDONLY রয়েছে। যদি কোনও ত্রুটি হয় তবে এটি * পাঠেররর টাইপ হবে।
প্রকারের প্রত্যাবর্তিত মান ইন্টারফেস *os.Fileপ্রয়োগ করে io.Reader।
টাইপ * ওএস.ফায়াল আইও.আরেডার ইন্টারফেস প্রয়োগ করে, তাই আপনি ফাইলটি পাঠক হিসাবে ফিরিয়ে দিতে পারেন। তবে আমি আপনাকে সুপারিশ করছি বুফিও প্যাকেজটি ব্যবহার করার জন্য যদি আপনার বড় ফাইলগুলি পড়ার উদ্দেশ্য থাকে তবে এরকম কিছু:
file, err := os.Open("path/file.ext")
// if err != nil { ... }
return bufio.NewReader(file)
bufioবড় ফাইলগুলির জন্য কেন সুপারিশ করবেন তা দয়া করে বিস্তারিত বলতে পারেন ?
path/file.ext। অন্য কোন উত্তর নেই যা os.Fileছিল তা বানান ।