2012-05-03 31 views
12

Tiện ích mở rộng tệp nào là phù hợp nhất khi lưu đối tượng Serializable vào đĩa?Phần mở rộng tệp cho đối tượng được Nối tiếp

FileOutputStream fos = null; 
ObjectOutputStream out = null; 
try { 
    fos = new FileOutputStream(filename); 
    out = new ObjectOutputStream(fos); 
    out.writeObject(mySerializableObject); 
} catch (IOException ex) { 
    ex.printStackTrace(); 
} finally { 
    IOUtils.closeQuietly(out); 
} 
+1

Tôi đang suy nghĩ. Hiện tại nhưng không phải 100% – Edd

Trả lời

23

".ser" là một sự lựa chọn hợp lý cho các tập tin hậu tố - http://www.file-extensions.org/ser-file-extension

Tuy nhiên, bạn có thể tranh luận rằng nó làm cho ít sự khác biệt gì suffix bạn sử dụng ... với điều kiện là không mâu thuẫn khác hậu tố ứng dụng thường được sử dụng.

Một tệp đối tượng được tuần tự hóa Java chỉ có thể được đọc (theo cách thông thường) bởi một ứng dụng Java có các lớp có liên quan trên đường dẫn lớp của nó. Hậu tố ".ser" một kích thước phù hợp không cung cấp manh mối nào về những gì các lớp đó có thể và nơi mà khung công tác khởi chạy ứng dụng sẽ tìm thấy chúng. Vì vậy, bạn sẽ không thể thiết lập một liên kết tệp kiểu Windows để cung cấp khởi chạy ứng dụng nhấp đúp.


Có cách nào tôi có thể xem hoặc chỉnh sửa tệp ser ??

Có thể, nhưng với độ khó lớn và chỉ trong một số điều kiện nhất định.

Nội dung tệp phụ thuộc nhiều vào o lớp đã được đăng. Bây giờ có thể xác định tên của lớp đó là gì, và (trong một số trường hợp) tên và loại của các trường được tuần tự hóa. Tuy nhiên, nếu lớp sử dụng serialization/externalization tùy chỉnh, biểu diễn sẽ là một blob mờ của dữ liệu nhị phân mà không có manh mối nào trong tệp như cách giải mã nó. Vấn đề blob mờ là khá phổ biến bởi vì nhiều lớp quan trọng trong thư viện lớp Java SE sử dụng serialization tùy chỉnh ... cho hiệu quả ... và do đó, có nhiều lớp ứng dụng.

Cách tiếp cận khác có thể là tìm tệp .class cho tất cả các lớp được đề cập trong tệp .ser, deserialize đối tượng và sử dụng phản chiếu để truy cập các trường của đối tượng được deserialised. Bạn thậm chí có thể tinh chỉnh chúng và reserialize chúng. Tuy nhiên, nếu bạn không có phiên bản phù hợp của tất cả các tệp .class, đây là một tệp không khởi động.

+0

Có cách nào tôi có thể xem hoặc chỉnh sửa tệp ser ?? – Winz

+1

@ user1042983 Tóm lại, không - nó là một danh sách các đối tượng Java, và chỉ nên được chỉnh sửa theo chương trình bởi ứng dụng Java đã tạo ra nó. – Alex

Các vấn đề liên quan