Data Serialization এবং Deserialization হল একটি ডেটা স্টোরেজ বা ট্রান্সমিশন প্রক্রিয়া যা Java এ অবজেক্টগুলিকে বাইট স্ট্রিমে রূপান্তর (serialize) এবং আবার বাইট স্ট্রিম থেকে অবজেক্টে রূপান্তর (deserialize) করে। Apache Commons IO লাইব্রেরি এই প্রক্রিয়াকে সহজ এবং কার্যকরী করার জন্য প্রয়োজনীয় সরঞ্জাম সরবরাহ করে, বিশেষ করে স্ট্রিমের সাথে কাজ করার সময়।
যদিও Apache Commons IO সরাসরি serialization/deserialization এর জন্য কোনো নির্দিষ্ট API সরবরাহ না করলেও, আপনি Java IO বা Java NIO এর মাধ্যমে object serialization এবং deserialization করতে পারেন, এবং Commons IO লাইব্রেরির IOUtils বা ObjectInputStream এবং ObjectOutputStream ব্যবহার করতে পারেন।
এখানে আমরা Java IO ক্লাসের মাধ্যমে data serialization এবং deserialization এর ধারণা এবং ব্যবহার দেখব।
Serialization হল একটি প্রক্রিয়া যেখানে একটি অবজেক্টকে বাইট স্ট্রিমে রূপান্তর করা হয় যাতে সেটি একটি ফাইল বা নেটওয়ার্কের মাধ্যমে সংরক্ষণ বা ট্রান্সফার করা যায়। এর মাধ্যমে অবজেক্টের অবস্থা সংরক্ষণ করা সম্ভব হয়।
ObjectOutputStream ব্যবহার করে একটি অবজেক্টকে file বা stream এ serialize করা হয়।
উদাহরণ: Object Serialization
import java.io.*;
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "Person[name=" + name + ", age=" + age + "]";
}
}
public class SerializationExample {
public static void main(String[] args) {
Person person = new Person("John Doe", 30);
try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
// Serialize the object to a file
out.writeObject(person);
System.out.println("Object has been serialized!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
Object has been serialized!
Deserialization হল একটি প্রক্রিয়া যেখানে একটি বাইট স্ট্রিমকে পুনরায় একটি অবজেক্টে রূপান্তর করা হয়।
ObjectInputStream ব্যবহার করে একটি ফাইল বা স্ট্রিম থেকে অবজেক্টকে deserialize করা হয়।
উদাহরণ: Object Deserialization
import java.io.*;
public class DeserializationExample {
public static void main(String[] args) {
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"))) {
// Deserialize the object from the file
Person person = (Person) in.readObject();
System.out.println("Deserialized Object: " + person);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
Deserialized Object: Person[name=John Doe, age=30]
যদিও Apache Commons IO সরাসরি serialization/deserialization সমর্থন করে না, তবে Commons IO লাইব্রেরির IOUtils ব্যবহার করে আপনি স্ট্রিমে ডেটা কপি বা ট্রান্সফার করতে পারেন যা serialization/deserialization এর সাথে একত্রে ব্যবহার করা যায়।
import org.apache.commons.io.IOUtils;
import java.io.*;
class Person implements Serializable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "Person[name=" + name + ", age=" + age + "]";
}
}
public class IOUtilsSerializationExample {
public static void main(String[] args) {
Person person = new Person("John Doe", 30);
// Serialize the object to a byte array
try (ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
ObjectOutputStream objectStream = new ObjectOutputStream(byteStream)) {
// Write object to byte array
objectStream.writeObject(person);
// Using IOUtils to write the byte array to a file
IOUtils.write(byteStream.toByteArray(), new FileOutputStream("person.ser"));
System.out.println("Object has been serialized using IOUtils!");
} catch (IOException e) {
e.printStackTrace();
}
// Deserialize the object from the file
try {
byte[] data = IOUtils.toByteArray(new FileInputStream("person.ser"));
try (ObjectInputStream objectStream = new ObjectInputStream(new ByteArrayInputStream(data))) {
Person deserializedPerson = (Person) objectStream.readObject();
System.out.println("Deserialized Object: " + deserializedPerson);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
Object has been serialized using IOUtils!
Deserialized Object: Person[name=John Doe, age=30]
Data Serialization এবং Deserialization হল অবজেক্টকে বাইট স্ট্রিমে রূপান্তর এবং পুনরায় অবজেক্টে রূপান্তর করার একটি গুরুত্বপূর্ণ প্রক্রিয়া। Apache Commons IO সরাসরি এই প্রক্রিয়ার জন্য API সরবরাহ না করলেও, Java IO এর ObjectInputStream এবং ObjectOutputStream এর মাধ্যমে আপনি সহজেই এই প্রক্রিয়া পরিচালনা করতে পারেন এবং IOUtils ব্যবহার করে ফাইলের মধ্যে ডেটা কপি বা ট্রান্সফার করতে পারেন। Serialization এবং Deserialization ব্যবহারের মাধ্যমে আপনি অবজেক্টগুলিকে স্টোর করতে এবং ট্রান্সফার করতে সক্ষম হবেন, যা সফটওয়্যারের কার্যকারিতা এবং স্থায়িত্বে সহায়তা করে।
common.read_more