Properties類是Java集合框架中的一種特殊類型,它表示一個持久的屬性集。Properties類中的屬性是以鍵值對的形式存儲的,其中鍵和值都是字符串類型。
Properties類實現了Serializable接口,因此可以對其進行序列化操作。序列化是將對象轉換為字節流的過程,可以將對象保存到文件或通過網絡傳輸。
要對Properties對象進行序列化,可以使用ObjectOutputStream類將其寫入到輸出流中,示例如下:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.Properties;
public class PropertiesSerialization {
public static void main(String[] args) {
Properties properties = new Properties();
properties.setProperty("key1", "value1");
properties.setProperty("key2", "value2");
try (FileOutputStream fileOut = new FileOutputStream("properties.ser");
ObjectOutputStream objectOut = new ObjectOutputStream(fileOut)) {
objectOut.writeObject(properties);
System.out.println("Properties object serialized successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的示例中,首先創建了一個Properties對象,并為其添加了一些屬性。然后使用ObjectOutputStream將Properties對象寫入到名為"properties.ser"的文件中。
要反序列化Properties對象,可以使用ObjectInputStream類讀取文件中的字節流,并將其轉換為Properties對象,示例如下:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Properties;
public class PropertiesDeserialization {
public static void main(String[] args) {
Properties properties = null;
try (FileInputStream fileIn = new FileInputStream("properties.ser");
ObjectInputStream objectIn = new ObjectInputStream(fileIn)) {
properties = (Properties) objectIn.readObject();
System.out.println("Properties object deserialized successfully.");
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
if (properties != null) {
System.out.println(properties.getProperty("key1"));
System.out.println(properties.getProperty("key2"));
}
}
}
在上面的示例中,使用ObjectInputStream從"properties.ser"文件中讀取字節流,并將其轉換為Properties對象。最后打印出Properties對象中的屬性值。