Java I/O প্যাকেজ (Input/Output Package) হল একটি Java লাইব্রেরি যা ইনপুট এবং আউটপুট অপারেশন পরিচালনা করতে ব্যবহৃত হয়। এটি Java প্রোগ্রামে ফাইল, ডেটাবেস, নেটওয়ার্ক ইত্যাদি বিভিন্ন ধরনের ডেটা প্রবাহের জন্য ব্যবহৃত হয়। I/O প্যাকেজ Java-তে ডেটার ইনপুট বা আউটপুট পরিচালনার জন্য একাধিক ক্লাস এবং ইন্টারফেস প্রদান করে।
Java I/O প্যাকেজের প্রধান কম্পোনেন্টগুলো:
Java I/O প্যাকেজ দুটি প্রধান অংশে বিভক্ত:
- Byte Stream (বাইট স্ট্রিম)
- Character Stream (ক্যারেক্টার স্ট্রিম)
1. Byte Stream (বাইট স্ট্রিম):
বাইট স্ট্রিমগুলি ৮-বিট বাইট (0-255) ডেটা সংগ্রহ ও পরিবহন করার জন্য ব্যবহৃত হয়। বাইট স্ট্রিম সাধারণত ফাইল, চিত্র, অডিও বা অন্যান্য বাইনারি ডেটা পড়তে এবং লেখার জন্য ব্যবহৃত হয়।
- Principal Classes:
- InputStream: একটি অ্যাবস্ট্রাক্ট ক্লাস যা সকল বাইট স্ট্রিম ক্লাসের জন্য বেস ক্লাস হিসেবে কাজ করে। এটি বিভিন্ন ইনপুট অপারেশন (যেমন
read()) প্রদান করে। - OutputStream: একটি অ্যাবস্ট্রাক্ট ক্লাস যা সকল আউটপুট স্ট্রিম ক্লাসের জন্য বেস ক্লাস হিসেবে কাজ করে। এটি বিভিন্ন আউটপুট অপারেশন (যেমন
write()) প্রদান করে।
- InputStream: একটি অ্যাবস্ট্রাক্ট ক্লাস যা সকল বাইট স্ট্রিম ক্লাসের জন্য বেস ক্লাস হিসেবে কাজ করে। এটি বিভিন্ন ইনপুট অপারেশন (যেমন
- কিছু সাধারণ ক্লাস:
- FileInputStream: এটি ফাইল থেকে বাইট রিড করতে ব্যবহৃত হয়।
- FileOutputStream: এটি ফাইল এ বাইট লেখার জন্য ব্যবহৃত হয়।
- BufferedInputStream: এটি ইনপুট বাইট স্ট্রিমের জন্য বাফারিং সিস্টেম প্রদান করে, যা আরও দ্রুত ইনপুট পড়তে সহায়তা করে।
- BufferedOutputStream: এটি আউটপুট বাইট স্ট্রিমের জন্য বাফারিং সিস্টেম প্রদান করে, যা আরও দ্রুত আউটপুট লেখাতে সহায়তা করে।
2. Character Stream (ক্যারেক্টার স্ট্রিম):
ক্যারেক্টার স্ট্রিমগুলি ইউনিকোড ক্যারেক্টার (16-বিট) ডেটা সংগ্রহ ও পরিবহন করার জন্য ব্যবহৃত হয়। এই স্ট্রিমগুলি সাধারণত পাঠ্য ডেটা (যেমন টেক্সট ফাইল) পড়তে এবং লেখার জন্য ব্যবহৃত হয়।
- Principal Classes:
- Reader: এটি একটি অ্যাবস্ট্রাক্ট ক্লাস যা সকল ক্যারেক্টার স্ট্রিম ক্লাসের জন্য বেস ক্লাস হিসেবে কাজ করে। এটি ইনপুট অপারেশন (যেমন
read()) প্রদান করে। - Writer: এটি একটি অ্যাবস্ট্রাক্ট ক্লাস যা সকল ক্যারেক্টার স্ট্রিম ক্লাসের জন্য বেস ক্লাস হিসেবে কাজ করে। এটি আউটপুট অপারেশন (যেমন
write()) প্রদান করে।
- Reader: এটি একটি অ্যাবস্ট্রাক্ট ক্লাস যা সকল ক্যারেক্টার স্ট্রিম ক্লাসের জন্য বেস ক্লাস হিসেবে কাজ করে। এটি ইনপুট অপারেশন (যেমন
- কিছু সাধারণ ক্লাস:
- FileReader: এটি ফাইল থেকে ক্যারেক্টার রিড করতে ব্যবহৃত হয়।
- FileWriter: এটি ফাইল এ ক্যারেক্টার লেখার জন্য ব্যবহৃত হয়।
- BufferedReader: এটি ইনপুট ক্যারেক্টার স্ট্রিমের জন্য বাফারিং সিস্টেম প্রদান করে, যা দ্রুত পাঠ্য রিড করতে সহায়তা করে।
- BufferedWriter: এটি আউটপুট ক্যারেক্টার স্ট্রিমের জন্য বাফারিং সিস্টেম প্রদান করে, যা দ্রুত পাঠ্য লেখাতে সহায়তা করে।
3. Data Streams (ডেটা স্ট্রিম):
ডেটা স্ট্রিমগুলি প্রিমিটিভ ডেটা টাইপ (যেমন int, float, boolean) এবং স্ট্রিংগুলোকে সরাসরি স্টোর এবং রিট্রিভ করতে ব্যবহৃত হয়। এটি বাইট স্ট্রিম বা ক্যারেক্টার স্ট্রিমের উপর ভিত্তি করে কাজ করে এবং ডেটার পাঠানো এবং গ্রহণের জন্য একটি স্ট্যান্ডার্ড ফরম্যাট ব্যবহার করে।
- Principal Classes:
- DataInputStream: এটি প্রিমিটিভ ডেটা টাইপগুলি (যেমন
int,float,boolean) পড়ার জন্য ব্যবহৃত হয়। - DataOutputStream: এটি প্রিমিটিভ ডেটা টাইপগুলি (যেমন
int,float,boolean) লেখার জন্য ব্যবহৃত হয়।
- DataInputStream: এটি প্রিমিটিভ ডেটা টাইপগুলি (যেমন
4. Object Streams (অবজেক্ট স্ট্রিম):
অবজেক্ট স্ট্রিমগুলি অবজেক্টকে সরাসরি স্টোর এবং রিট্রিভ করার জন্য ব্যবহৃত হয়। এটি Serializable ইন্টারফেস ব্যবহার করে অবজেক্টগুলোকে সিরিয়ালাইজ (write) এবং ডেসিরিয়ালাইজ (read) করতে সহায়তা করে।
- Principal Classes:
- ObjectInputStream: এটি অবজেক্ট রিড করার জন্য ব্যবহৃত হয়।
- ObjectOutputStream: এটি অবজেক্ট লিখতে ব্যবহৃত হয়।
5. Random Access File (র্যান্ডম অ্যাক্সেস ফাইল):
এই ক্লাসটি একটি ফাইলের যে কোন স্থানে রিড এবং রাইট অপারেশন পরিচালনা করতে সাহায্য করে। এটি অ্যাক্সেস পয়েন্টের মাধ্যমে নির্দিষ্ট অবস্থান থেকে ডেটা পড়তে এবং লিখতে সক্ষম।
- Principal Class:
- RandomAccessFile: এটি একটি ফাইলের যে কোন জায়গায় ডেটা রিড এবং রাইট করতে ব্যবহৃত হয়।
Java I/O প্যাকেজের উপকারী ক্লাস এবং ইন্টারফেসসমূহ:
- File: ফাইল এবং ডিরেক্টরি পরিচালনার জন্য ব্যবহৃত হয়।
- উদাহরণ:
File file = new File("filename.txt");
- উদাহরণ:
- PrintStream / PrintWriter: এই ক্লাসগুলি আউটপুট স্ট্রিমের মাধ্যমে ফরম্যাটেড আউটপুট (যেমন প্রিন্টিং) প্রদান করে।
- উদাহরণ:
PrintWriter writer = new PrintWriter("output.txt");
- উদাহরণ:
- Console: ইউজারের ইনপুট গ্রহণ এবং আউটপুট প্রদানের জন্য ব্যবহৃত হয়।
- উদাহরণ:
Console console = System.console();
- উদাহরণ:
Java I/O প্যাকেজের সুবিধা:
- নমনীয়তা: Java I/O প্যাকেজ বিভিন্ন ধরনের I/O অপারেশন (ফাইল, নেটওয়ার্ক, কনসোল, ডেটাবেস ইত্যাদি) পরিচালনার জন্য অত্যন্ত নমনীয়।
- বাফারিং:
BufferedReaderএবংBufferedWriterএর মতো ক্লাসগুলি ইনপুট এবং আউটপুট অপারেশনের গতি বৃদ্ধি করতে সাহায্য করে। - অবজেক্ট সিরিয়ালাইজেশন: Java I/O প্যাকেজ অবজেক্টকে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার জন্য
ObjectInputStreamএবংObjectOutputStreamক্লাস প্রদান করে। - কাস্টম I/O স্ট্রিম: Java I/O প্যাকেজে আপনি কাস্টম স্ট্রিম তৈরি করে বিশেষ প্রয়োজন অনুযায়ী I/O পরিচালনা করতে পারবেন।
Java I/O প্যাকেজ ইনপুট এবং আউটপুট অপারেশন পরিচালনার জন্য একটি শক্তিশালী এবং নমনীয় পদ্ধতি প্রদান করে। এর প্রধান কম্পোনেন্ট যেমন Byte Streams, Character Streams, Data Streams, Object Streams, এবং Random Access File ক্লাসগুলো ইত্যাদি Java-তে I/O অপারেশন পরিচালনা করতে ব্যবহৃত হয়।
Read more