Java তে FileInputStream এবং FileOutputStream ক্লাস দুটি binary data (যেমন: ছবি, অডিও ফাইল, ভিডিও ফাইল, ইত্যাদি) পড়তে এবং লেখার জন্য ব্যবহৃত হয়। এই ক্লাসগুলো byte-oriented streams হিসেবে কাজ করে, যা byte আকারে ডেটা পরিচালনা করে এবং character-based streams এর মতো text data না, বরং binary data এক্সেস করে।
FileInputStream এবং FileOutputStream এর মূল উদ্দেশ্য:
- FileInputStream: ফাইল থেকে বাইনারি ডেটা রিড করতে ব্যবহৃত হয়।
- FileOutputStream: বাইনারি ডেটা ফাইলে লেখার জন্য ব্যবহৃত হয়।
FileInputStream এবং FileOutputStream Example:
এই উদাহরণে আমরা একটি ফাইল থেকে বাইনারি ডেটা রিড করব এবং সেই ডেটা অন্য একটি ফাইলে লিখে দেব।
Example: Reading and Writing Binary Data Using FileInputStream and FileOutputStream
import java.io.*;
public class FileCopyExample {
public static void main(String[] args) {
// Source and Destination file paths
String sourceFile = "sourceFile.jpg"; // Replace with the path of your source file
String destFile = "destinationFile.jpg"; // Replace with the path of your destination file
// Reading from the source file and writing to the destination file
try (FileInputStream fis = new FileInputStream(sourceFile);
FileOutputStream fos = new FileOutputStream(destFile)) {
byte[] buffer = new byte[1024]; // Buffer size to read/write 1KB at a time
int bytesRead;
// Read data from source file and write it to destination file
while ((bytesRead = fis.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead); // Write the read bytes to destination file
}
System.out.println("File copied successfully!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Code Explanation:
- FileInputStream:
FileInputStream fis = new FileInputStream(sourceFile);→ এটি sourceFile ফাইল থেকে বাইনারি ডেটা রিড করতে ব্যবহৃত হয়।- এখানে sourceFile হলো সেই ফাইলটি যার থেকে বাইনারি ডেটা রিড করা হবে (যেমন: একটি ছবি বা ভিডিও ফাইল)।
- FileOutputStream:
FileOutputStream fos = new FileOutputStream(destFile);→ এটি destinationFile ফাইলে বাইনারি ডেটা লেখার জন্য ব্যবহৃত হয়।- destinationFile হলো সেই ফাইল যেখানে রিড করা ডেটা নতুন করে লেখা হবে।
- Buffering:
byte[] buffer = new byte[1024];→ এখানে একটি বাফার তৈরি করা হয়েছে যাতে প্রতি বার ১ কিলোবাইট ডেটা রিড বা রাইট করা যায়। এটি I/O অপারেশনগুলোকে দ্রুততর করে তোলে।fis.read(buffer)→ ফাইল থেকে ডেটা রিড করতে বাফার ব্যবহার করা হচ্ছে।fos.write(buffer, 0, bytesRead)→ রিড করা ডেটাকে ডেস্টিনেশন ফাইলে লেখার জন্য বাফার ব্যবহার করা হচ্ছে।
- Exception Handling:
IOException e→ I/O অপারেশনগুলিতে যদি কোনো সমস্যা হয়, যেমন ফাইল না পাওয়া, পারমিশন সমস্যা ইত্যাদি, তবে তা catch ব্লকে ধরা হবে।
- try-with-resources:
try (FileInputStream fis = new FileInputStream(sourceFile); FileOutputStream fos = new FileOutputStream(destFile))→ এখানে try-with-resources ব্যবহৃত হয়েছে যাতে ফাইল স্ট্রিমগুলো স্বয়ংক্রিয়ভাবে বন্ধ হয়, কোনো সমস্যা ছাড়াই। এটি Java 7 থেকে প্রবর্তিত।
Output:
File copied successfully!
এটি একটি সাধারণ binary file copy operation, যেখানে একটি বাইনারি ফাইল (যেমন একটি ছবি) রিড করা হয়েছে এবং তার কন্টেন্ট অন্য একটি ফাইলে লেখা হয়েছে।
Key Points About FileInputStream and FileOutputStream:
- Binary Data Handling:
- FileInputStream এবং FileOutputStream বিশেষভাবে binary data রিড এবং রাইট করার জন্য ডিজাইন করা হয়েছে। তারা byte স্তরে কাজ করে, যা text-based streams (যেমন
FileReaderবাBufferedReader) এর থেকে আলাদা।
- FileInputStream এবং FileOutputStream বিশেষভাবে binary data রিড এবং রাইট করার জন্য ডিজাইন করা হয়েছে। তারা byte স্তরে কাজ করে, যা text-based streams (যেমন
- Efficiency:
- এই ক্লাসগুলো ডেটা সেক্টরে একসাথে বড় অংশ রিড বা রাইট করার জন্য একটি buffer ব্যবহার করে, যা কার্যকারিতা বৃদ্ধি করে। বড় ফাইলের ক্ষেত্রে এক্সটেনশন বা বড় সাইজের ফাইলের জন্য আপনি buffered I/O ব্যবহার করতে পারেন।
- Error Handling:
IOExceptionসাধারণত ফাইল পরিচালনার ক্ষেত্রে বিভিন্ন সমস্যা (যেমন ফাইল পাওয়া না যাওয়া, রাইট পারমিশন না থাকা) ঘটলে থ্রো করা হয়।
- File Types:
- FileInputStream এবং FileOutputStream সব ধরনের বাইনারি ডেটা (যেমন ছবি, অডিও, ভিডিও, PDF, ইত্যাদি) রিড এবং রাইট করতে ব্যবহার করা যেতে পারে।
- FileInputStream এবং FileOutputStream Java তে binary data এর জন্য খুবই কার্যকরী, এবং এই দুটি ক্লাস ফাইলের মধ্যে ডেটা রিড এবং রাইট করার জন্য খুবই সাধারণ ও শক্তিশালী টুল।
- আপনি যখন বড় ফাইল বা বাইনারি ডেটা (যেমন ছবি, ভিডিও, বা অডিও) এক্সেস করবেন, তখন এই দুটি ক্লাস ব্যবহারের মাধ্যমে সেগুলোর সঠিক এবং কার্যকরী পরিচালনা করা সম্ভব।
Content added By
Read more