1. OutputStreamক্লাস
আমরা সম্প্রতি ইনপুট স্ট্রীমগুলি অন্বেষণ করেছি৷ আউটপুট স্ট্রীম সম্পর্কে কথা বলার সময় এসেছে।
বাইট আউটপুট সমর্থন করে এমন সমস্ত ক্লাসের জন্য ক্লাস OutputStreamহল প্যারেন্ট ক্লাস। এটি একটি বিমূর্ত শ্রেণী যা নিজে থেকে কিছুই করে না, তবে প্রতিটি অনুষ্ঠানের জন্য এটির বংশধর শ্রেণী রয়েছে।
এটা অত্যন্ত জটিল শোনাচ্ছে. আরও সহজভাবে বলতে গেলে, এই ক্লাসটি বাইটগুলিতে কাজ করে, উদাহরণস্বরূপ, অক্ষর বা অন্যান্য ডেটা প্রকার নয়। এবং সত্য যে এটি বিমূর্ত মানে আমরা সাধারণত এটি ব্যবহার করি না, বরং এর বংশধরদের মধ্যে একটি। উদাহরণস্বরূপ, FileOutputStreamএবং মত.
কিন্তু ক্লাসে ফিরে OutputStream। এই শ্রেণীর পদ্ধতি রয়েছে যা এর সমস্ত বংশধরদের অবশ্যই প্রয়োগ করতে হবে। এখানে প্রধান হল:
| পদ্ধতি | বর্ণনা |
|---|---|
|
intস্ট্রীমে এক বাইট (একটি নয়) লেখে । |
|
স্ট্রীমে বাইটের একটি অ্যারে লেখে |
|
স্ট্রীমে বাইটের একটি অ্যারের অংশ লেখে |
|
বাফারে সংরক্ষিত সমস্ত ডেটা স্ট্রীমে লেখে |
|
স্রোত বন্ধ করে দেয় |
আপনি যখন উত্তরাধিকারসূত্রে পাওয়া একটি ক্লাসের একটি বস্তু তৈরি করেন InputStream, তখন আপনি সাধারণত একটি উৎস অবজেক্ট নির্দিষ্ট করেন যেখান InputStreamথেকে ডেটা পড়ে। আপনি যখন উত্তরাধিকারসূত্রে প্রাপ্ত একটি ক্লাসের একটি অবজেক্ট তৈরি করেন OutputStream, তখন আপনি সাধারণত টার্গেট অবজেক্ট বা স্ট্রীম নির্দিষ্ট করেন যেখানে ডেটা লেখা হবে।
আসুন সংক্ষেপে ক্লাসের সমস্ত পদ্ধতির মধ্য দিয়ে যাওয়া যাক OutputStream:
write(int b)পদ্ধতি
intএই পদ্ধতিটি আউটপুট স্ট্রীমে একটি বাইট (একটি নয়) লেখে । পাস করা মান একটি বাইটে নিক্ষেপ করা হয় এবং int-এর প্রথম তিনটি বাইট বাতিল করা হয়।
write(byte[] buffer)পদ্ধতি
আউটপুট স্ট্রীমে বাইটের প্রদত্ত অ্যারে লেখে। এটাই.
write(byte[] buffer, int offset, int length)পদ্ধতি
আউটপুট স্ট্রীমে বাইটের পাস করা অ্যারের একটি অংশ লেখে। অফসেট ভেরিয়েবল অ্যারের প্রথম উপাদানের সূচী নির্দেশ করে এবং lengthলিখতে হবে উপসেটের দৈর্ঘ্য।
flush()পদ্ধতি
flush()বর্তমান স্ট্রীমে সম্ভাব্য বাফার করা যেকোন ডেটাকে টার্গেট স্ট্রীমে লিখতে বাধ্য করতে পদ্ধতিটি ব্যবহার করা হয় । একটি শৃঙ্খলে সাজানো বাফারিং এবং/অথবা একাধিক স্ট্রিম অবজেক্ট ব্যবহার করার সময় এটি প্রাসঙ্গিক।
close()পদ্ধতি
লক্ষ্য বস্তুতে কোনো অলিখিত তথ্য লেখে। আপনি যদি একটি ব্লক ব্যবহার করেন তবে পদ্ধতিটি close()কল করার দরকার নেই ।try-with-resources
একটি ফাইল কপি করার উদাহরণ
| কোড | বিঃদ্রঃ |
|---|---|
|
InputStreamএকটি ফাইল থেকে পড়ার জন্য OutputStreamএকটি ফাইল লিখুন বাফার যাতে আমরা ডেটা পড়ব যতক্ষণ স্ট্রীমে ডেটা থাকে ততক্ষণ বাফারে ডেটা পড়ুন বাফার থেকে দ্বিতীয় স্ট্রীমে ডেটা লিখুন |
2. Writerক্লাস
ক্লাসটি ক্লাসের Writerমতো ঠিক একই OutputStream, তবে আবার একটি পার্থক্য: এটি charবাইটের পরিবর্তে অক্ষর ( ) দিয়ে কাজ করে।
এটি একটি বিমূর্ত ক্লাস: আপনি ক্লাসের বস্তু তৈরি করতে পারবেন না Writer। এর মূল লক্ষ্য হল শত শত বংশধর শ্রেণীর জন্য একটি সাধারণ অভিভাবক শ্রেণী হওয়া এবং তাদের চরিত্রের স্ট্রিমগুলির সাথে কাজ করার জন্য সাধারণ পদ্ধতিগুলি দেওয়া।
ক্লাসের পদ্ধতি Writer(এবং এর সমস্ত বংশধর শ্রেণী):
| পদ্ধতি | বর্ণনা |
|---|---|
|
intস্রোতে একটি অক্ষর (একটি নয়) লেখে । |
|
প্রবাহে অক্ষরের একটি অ্যারে লেখে |
|
স্ট্রীমে অক্ষরের একটি অ্যারের অংশ লেখে |
|
স্রোতে একটি স্ট্রিং লেখে |
|
প্রবাহে একটি স্ট্রিংয়ের অংশ লেখে |
|
বাফারে সংরক্ষিত সমস্ত ডেটা স্ট্রীমে লেখে |
|
স্রোত বন্ধ করে দেয় |
পদ্ধতিগুলি ক্লাসের পদ্ধতিগুলির সাথে খুব মিল OutputStream, তবে তারা বাইটের পরিবর্তে অক্ষরগুলির সাথে কাজ করে।
পদ্ধতির বর্ণনা:
write(int b)পদ্ধতি
এই পদ্ধতিটি আউটপুট স্ট্রীমে একটি একক অক্ষর ( char— একটি নয় ) লেখে। intপাস করা মান একটি তে নিক্ষেপ করা হয় charএবং প্রথম দুটি বাইট বাতিল করা হয়।
write(char[] buffer)পদ্ধতি
আউটপুট স্ট্রীমে অক্ষরের প্রদত্ত অ্যারে লেখে।
write(char[] buffer, int offset, int length)পদ্ধতি
আউটপুট স্ট্রীমে অক্ষরের পাস করা অ্যারের একটি অংশ লেখে। ভেরিয়েবলটি offsetঅ্যারের প্রথম উপাদানের সূচী নির্দেশ করে এবং যে lengthসাবসেটটি লিখতে হবে তার দৈর্ঘ্য।
write(String str)পদ্ধতি
আউটপুট স্ট্রীমে প্রদত্ত স্ট্রিং লেখে।
write(String str, int offset, int length)পদ্ধতি
প্রদত্ত স্ট্রিংয়ের একটি অংশ আউটপুট স্ট্রীমে লেখে: স্ট্রিংটি অক্ষরের একটি অ্যারেতে রূপান্তরিত হয়। ভেরিয়েবলটি offsetঅ্যারের প্রথম উপাদানের সূচী নির্দেশ করে এবং যে lengthসাবসেটটি লিখতে হবে তার দৈর্ঘ্য।
flush()পদ্ধতি
flush()বর্তমান স্ট্রীমে সম্ভাব্য বাফার করা যেকোন ডেটাকে টার্গেট স্ট্রীমে লিখতে বাধ্য করতে পদ্ধতিটি ব্যবহার করা হয় । একটি শৃঙ্খলে সাজানো বাফারিং এবং/অথবা একাধিক স্ট্রিম অবজেক্ট ব্যবহার করার সময় এটি প্রাসঙ্গিক।
close()পদ্ধতি
লক্ষ্য বস্তুতে কোনো অলিখিত তথ্য লেখে। আপনি যদি একটি ব্লক ব্যবহার করেন তবে পদ্ধতিটি close()কল করার দরকার নেই ।try-with-resources
একটি প্রোগ্রামের উদাহরণ যা একটি পাঠ্য ফাইল অনুলিপি করে:
| কোড | বিঃদ্রঃ |
|---|---|
|
Readerএকটি ফাইল থেকে পড়ার জন্য Writerএকটি ফাইলে লেখার জন্য বাফার যেখানে আমরা ডেটা পড়ব যতক্ষণ স্ট্রীমে ডেটা থাকে ততক্ষণ একটি বাফারে ডেটা পড়ুন বাফার থেকে দ্বিতীয় স্ট্রীমে ডেটা লিখুন |
StringWriterক্লাস
আরেকটি আকর্ষণীয় শ্রেণী রয়েছে যা Writerক্লাসের উত্তরাধিকারী হয়: এটি বলা হয় StringWriter। এটিতে একটি পরিবর্তনযোগ্য স্ট্রিং রয়েছে - একটি StringBufferবস্তু। এবং প্রতিবার আপনি বস্তুতে কিছু "লিখেন" StringWriter, পাঠ্যটি কেবল তার অভ্যন্তরীণ বাফারে যোগ করা হয়।
উদাহরণ:
| কোড | বিঃদ্রঃ |
|---|---|
|
একটি টার্গেট ক্যারেক্টার স্ট্রীম ( StringWriter) তৈরি করা হয় একটি স্ট্রিং একটি স্ট্রিং এর ভিতরে বাফারে লেখা হয় একটি স্ট্রিং একটি বস্তুর বিষয়বস্তুকে একটি স্ট্রিংয়ে রূপান্তরিত করার StringWriterভিতরে বাফারে লেখা হয় StringWriter |
এই ক্ষেত্রে, StringWriterক্লাসটি মূলত ক্লাসের উপর একটি মোড়ক StringBuffer, তবে StringWriterক্লাসটি স্ট্রিম ক্লাসের একটি বংশধর Writerএবং এটি স্ট্রিম অবজেক্টের চেইনগুলিতে ব্যবহার করা যেতে পারে। এটি অনুশীলনে একটি সুন্দর দরকারী সম্পত্তি।
GO TO FULL VERSION