Apache Commons IO লাইব্রেরি InputStream এবং OutputStream এর কাজগুলোকে আরও সহজ, কার্যকরী এবং নিরাপদ করে তোলে। FileInputStream এবং FileOutputStream স্ট্যান্ডার্ড Java API এর অংশ হলেও, Apache Commons IO লাইব্রেরি ফাইল এবং স্ট্রিম সম্পর্কিত কাজগুলো সহজ এবং দ্রুত করতে অনেক সাহায্য করে। এতে IOUtils ক্লাসের মাধ্যমে ফাইল স্ট্রিমের কার্যকর ব্যবস্থাপনা করা সম্ভব।
Apache Commons IO লাইব্রেরি ব্যবহার করে আপনি এই স্ট্রিমগুলির সাথে কাজ করার সময় কোড কমপ্লেক্সিটি কমাতে পারেন, এবং স্ট্রিম পরিচালনা আরও সহজ করতে পারেন।
ধরা যাক, আমাদের একটি ফাইল থেকে ডেটা পড়তে হবে এবং অন্য একটি ফাইলে ডেটা লিখতে হবে। Apache Commons IO লাইব্রেরি ফাইল কপি করার সময় পারফরম্যান্স অপটিমাইজেশন এবং সহজ ব্যবস্থাপনা সরবরাহ করে।
import org.apache.commons.io.IOUtils;
import java.io.*;
public class FileStreamExample {
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
// ফাইলের InputStream তৈরি
inputStream = new FileInputStream("source.txt");
// OutputStream তৈরি
outputStream = new FileOutputStream("destination.txt");
// FileInputStream থেকে FileOutputStream এ কপি করা
IOUtils.copy(inputStream, outputStream);
System.out.println("ফাইল কপি করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// স্ট্রিম বন্ধ করা
if (inputStream != null) inputStream.close();
if (outputStream != null) outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
IOUtils.copy(inputStream, outputStream)
: এটি InputStream থেকে OutputStream এ ডেটা কপি করে।FileInputStream
এবং FileOutputStream
এর মাধ্যমে ফাইল থেকে ডেটা পড়ে এবং অন্য ফাইলে লিখে।try-catch-finally
ব্লক ব্যবহার করা হয়েছে কারণ স্ট্রিম ব্যবহারের সময় IOException হতে পারে এবং স্ট্রিম বন্ধ করতে হবে।ফাইল কপি করা হয়েছে!
যখন আপনি বড় ফাইল বা ডেটা স্ট্রিমের সাথে কাজ করেন, তখন স্ট্রিমের গতি বাড়াতে BufferedInputStream এবং BufferedOutputStream ব্যবহার করা যায়। এটি স্ট্রিমের পারফরম্যান্স উন্নত করতে সাহায্য করে।
import org.apache.commons.io.IOUtils;
import java.io.*;
public class BufferedStreamExample {
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
// BufferedInputStream তৈরি
inputStream = new BufferedInputStream(new FileInputStream("source.txt"));
// BufferedOutputStream তৈরি
outputStream = new BufferedOutputStream(new FileOutputStream("destination.txt"));
// BufferedInputStream থেকে BufferedOutputStream এ কপি করা
IOUtils.copy(inputStream, outputStream);
System.out.println("ফাইল কপি করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// স্ট্রিম বন্ধ করা
if (inputStream != null) inputStream.close();
if (outputStream != null) outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
IOUtils.copy()
ব্যবহার করে সহজেই ডেটা কপি করা হয়।ফাইল কপি করা হয়েছে!
স্ট্রিম ব্যবহারের সময়, স্ট্রিম বন্ধ করার ব্যাপারে সতর্ক থাকতে হবে, কারণ যদি আপনি স্ট্রিম বন্ধ না করেন, তা হলে রিসোর্স লিক হতে পারে। Apache Commons IO লাইব্রেরি IOUtils.closeQuietly() মেথড সরবরাহ করে, যার মাধ্যমে আপনি স্ট্রিমগুলো নিরাপদে বন্ধ করতে পারেন এবং কোনো এক্সেপশন ফেলে না।
IOUtils.closeQuietly()
ব্যবহার করাimport org.apache.commons.io.IOUtils;
import java.io.*;
public class StreamManagementExample {
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
// FileInputStream তৈরি
inputStream = new FileInputStream("source.txt");
// FileOutputStream তৈরি
outputStream = new FileOutputStream("destination.txt");
// FileInputStream থেকে FileOutputStream এ কপি করা
IOUtils.copy(inputStream, outputStream);
System.out.println("ফাইল কপি করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
} finally {
// স্ট্রিম সাইলেন্টলি বন্ধ করা
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
}
}
}
IOUtils.closeQuietly(inputStream)
এবং IOUtils.closeQuietly(outputStream)
মেথডগুলি স্ট্রিমগুলো সাইলেন্টলি (নিরবভাবে) বন্ধ করে, অর্থাৎ কোনো এক্সেপশন ছুড়ে ফেলা হবে না।try-catch-finally
ব্লকের মধ্যে এই স্ট্রিমগুলো নিরাপদে ব্যবস্থাপনা করা হচ্ছে।ফাইল কপি করা হয়েছে!
ফাইল স্ট্রিম ব্যবহারের সময় IOException হতে পারে, যেমন যদি ফাইলটি খোলা না যায় বা লেখার অনুমতি না থাকে। তাই সঠিক exception handling জরুরি।
import org.apache.commons.io.IOUtils;
import java.io.*;
public class ExceptionHandlingExample {
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
// ফাইল ইনপুট স্ট্রিম
inputStream = new FileInputStream("source.txt");
// ফাইল আউটপুট স্ট্রিম
outputStream = new FileOutputStream("destination.txt");
// ফাইল কপি করা
IOUtils.copy(inputStream, outputStream);
} catch (FileNotFoundException e) {
System.err.println("ফাইল পাওয়া যায়নি: " + e.getMessage());
} catch (IOException e) {
System.err.println("IO ত্রুটি ঘটেছে: " + e.getMessage());
} finally {
// স্ট্রিম বন্ধ করা
try {
if (inputStream != null) inputStream.close();
if (outputStream != null) outputStream.close();
} catch (IOException e) {
System.err.println("স্ট্রিম বন্ধ করতে সমস্যা হয়েছে: " + e.getMessage());
}
}
}
}
FileNotFoundException
এবং IOException
এর জন্য আলাদা আলাদা catch ব্লক ব্যবহৃত হয়েছে।ফাইল কপি করা হয়েছে!
Apache Commons IO লাইব্রেরি FileInputStream এবং FileOutputStream ব্যবস্থাপনায় সাহায্য করে এবং কোড লেখার সময় পারফরম্যান্স অপটিমাইজেশন এবং সহজ ব্যবস্থাপনা সরবরাহ করে। IOUtils ক্লাসের মাধ্যমে InputStream এবং OutputStream এর মধ্যে ডেটা কপি করার জন্য সহজ উপায় পাওয়া যায়, এবং স্ট্রিম বন্ধ করার জন্য closeQuietly() মেথডটি ব্যবহার করা যায়। এতে ফাইল স্ট্রিম ব্যবস্থাপনা সহজ, কার্যকরী এবং নিরাপদ হয়।
common.read_more