अन्य लोगों की तरह कहा गया है कि बाइटबफर बाइट्स के बफर का एक लपेट है, इसलिए यदि आपको अपनी कक्षा को क्रमबद्ध करने की आवश्यकता है तो बाइट [] में बदलना बेहतर है और इस बीन में डेटा पढ़ने/लिखने वाले वर्गों में बाइटबफर का उपयोग करें।
लेकिन यदि आपको बाइटबफर संपत्ति (उदाहरण के लिए यूज़िन कैसंड्रा ब्लब्स) को क्रमबद्ध करने की आवश्यकता है तो आप हमेशा एक कस्टम सीरियलाइजेशन लागू कर सकते हैं (इस यूआरएल http://www.oracle.com/technetwork/articles/java/javaserial-1536170.html देखें)।
मुख्य बिंदु इस प्रकार हैं:
- निशान क्षणिक रूप ByteBuffer (इसलिए यह डिफ़ॉल्ट रूप से धारावाहिक नहीं है)
- अपने स्वयं के पढ़ने को लागू/क्रमबद्धता के लिए लिखना जहां ByteBuffer -> बाइट [] जब serializing और बाइट [] -> desteializing पर बाइटबफर।
इस वर्ग की कोशिश करो और मुझे पता है अगर यह आपके लिए काम करता है:
public class NetByteBuffer implements java.io.Serializable {
private static final long serialVersionUID = -2831273345165209113L;
//serializable property
String anotherProperty;
// mark as transient so this is not serialized by default
transient ByteBuffer data;
public NetByteBuffer(String anotherProperty, ByteBuffer data) {
this.data = data;
this.anotherProperty = anotherProperty;
}
public ByteBuffer getData() {
return this.data;
}
private void writeObject(ObjectOutputStream out) throws IOException {
// write default properties
out.defaultWriteObject();
// write buffer capacity and data
out.writeInt(data.capacity());
out.write(data.array());
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
//read default properties
in.defaultReadObject();
//read buffer data and wrap with ByteBuffer
int bufferSize = in.readInt();
byte[] buffer = new byte[bufferSize];
in.read(buffer, 0, bufferSize);
this.data = ByteBuffer.wrap(buffer, 0, bufferSize);
}
public String getAnotherProperty() {
return anotherProperty;
}
}
स्रोत
2015-11-04 11:00:29
मैं क्या फायदे खो जाएगा? यह आपको एक विशेष कारण के बिना 'ByteBuffer' उपयोग कर रहे हैं, तो शायद आप बाइट सरणी का उपयोग कर सुरक्षित हैं Filechannel.map – jtnire
से एक PDF फ़ाइल के लिए है;) – Bozho