"হাই, অ্যামিগো, আবারো।"

"হ্যালো তোমাকে, ঋষি। আজকের পাঠ কি হবে?"

"আজ আমি আপনাকে পাঠক এবং লেখক সম্পর্কে বলতে যাচ্ছি।"

"কিন্তু, ঋষি, আমি ইতিমধ্যে তাদের সম্পর্কে প্রায় সবকিছুই জানি!"

"পুনরাবৃত্তি শেখার জননী।"

"হুম, ঠিক আছে।"

" পাঠক এবং লেখক হল ইনপুটস্ট্রিম এবং আউটপুট স্ট্রীমের এনালগ , কিন্তু তারা অক্ষর দিয়ে কাজ করে, বাইট নয়। কখনও কখনও এগুলিকে অক্ষর স্ট্রীমও বলা হয়, ইনপুটস্ট্রিম  এবং  আউটপুটস্ট্রিমের বিপরীতে  , যাকে বাইট স্ট্রিম বলা হয়।"

"একটি অক্ষরের জন্য, অন্যটি বাইটের জন্য। আমার মনে আছে।"

"এটি শুধু তাই নয়। এই ক্লাসগুলি বিশেষভাবে টেক্সট এবং স্ট্রিংগুলির সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। আজ আমরা এই বিমূর্ত ক্লাসগুলির দুটি ক্লাসিক বাস্তবায়ন দেখব: FileReader এবং FileWriter ।"

" ফাইলরিডার ক্লাসের পদ্ধতিগুলি এখানে রয়েছে :"

পদ্ধতি বর্ণনা
int read() প্রবাহ থেকে একটি অক্ষর পড়ে এবং এটি ফেরত দেয়৷
int read(char cbuf[], int offset, int length) অক্ষরের একটি অ্যারে পড়ে, পড়া অক্ষরের সংখ্যা ফেরত দেয়।
boolean ready() প্রবাহ থেকে পড়া সম্ভব হলে সত্য ফেরত দেয়।
void close() ইনপুট স্ট্রীম বন্ধ করে।
int read(java.nio.CharBuffer target) একটি বাফার মধ্যে অক্ষর একটি সেট পড়ুন.
int read(char cbuf[]) অক্ষরের একটি অ্যারে পড়ে।
long skip(long n) প্রবাহে n অক্ষর এড়িয়ে যায়।
String getEncoding() স্ট্রীমের বর্তমান এনকোডিং প্রদান করে।

"ঠিক আছে, আমি এই প্রায় সব জানি. কিন্তু FileWriter সম্পর্কে কি?"

পদ্ধতি বর্ণনা
void write(int c) স্রোতে একটি অক্ষর লেখেন।
void write(char cbuf[], int off, int len) প্রবাহে অক্ষরের একটি অ্যারে লেখে।
void write(char cbuf[]) প্রবাহে অক্ষরের একটি অ্যারে লেখে।
void write(String str, int off, int len) প্রবাহে একটি স্ট্রিংয়ের অংশ লেখে।
void write(String str) স্রোতে একটি স্ট্রিং লেখে।
void flush() মেমরিতে ক্যাশ করা সবকিছু ডিস্কে লিখে।
void close() প্রবাহ বন্ধ করে দেয়।
String getEncoding() স্ট্রীমের বর্তমান এনকোডিং প্রদান করে।

"আমি এটা জানি!"

"এটি চমৎকার। তাহলে আসুন একটি আকর্ষণীয় উদাহরণ দেখি, এবং পরে দিয়েগো আপনাকে আরও কাজ দেবে।"

"আপনি কিভাবে লাইন দ্বারা একটি ফাইল লাইন পড়তে পারেন? আপনি কোড লিখতে পারেন?"

"সহজ, দেখুন:"

কোড
// Create a list for storing the lines
List<String> list = new ArrayList<String>();

// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));

// As long as the file isn't empty, read from it
while (reader.ready())
{
 list.add(reader.readLine());
}

// Close the file
reader.close();

"হুম। খারাপ না।"

"খারাপ না? সবকিছুই সহজ এবং সুন্দর। এটা স্বীকার করুন, ঋষি—আমি ইতিমধ্যেই I/O থ্রেডগুলিতে দুর্দান্ত দক্ষতা অর্জন করেছি। তাহলে এখানে কী উন্নতি করা যেতে পারে?"

"আচ্ছা, উদাহরণস্বরূপ, আপনি এটি করতে পারেন:"

ঋষির কোড
File file = new File("c:/document.txt");

List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());

"হুম। এটা ছোট। আর আজকে তুমি আমাকে এই সব পদ্ধতির কথা বললে। আমি আবার কাজ করব। পাঠের জন্য ধন্যবাদ, ঋষি।"

"শুভকামনা, আমিগো।"