Tôi có một BitSet và muốn viết nó vào một tập tin- Tôi đã xem qua một giải pháp để sử dụng một ObjectOutputStream bằng cách sử dụng phương thức writeObject.viết một BitSet vào một tập tin trong java
Tôi nhìn ObjectOutputStream trong API java và thấy rằng bạn có thể viết những thứ khác (byte, int, ngắn vv)
Tôi cố gắng để kiểm tra lớp vì vậy tôi cố gắng viết một byte vào một tập tin sử dụng mã sau nhưng kết quả cho tôi một tệp có 7 byte thay vì 1 byte
câu hỏi của tôi là 6 byte đầu tiên trong tệp là gì? tại sao họ lại ở đó?
câu hỏi của tôi có liên quan đến một BitSet vì tôi không muốn bắt đầu viết nhiều dữ liệu vào một tệp và nhận ra tôi có byte ngẫu nhiên được chèn vào tệp mà không biết chúng là gì.
đây là mã:
byte[] bt = new byte[]{'A'};
File outFile = new File("testOut.txt");
FileOutputStream fos = new FileOutputStream(outFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.write(bt);
oos.close();
nhờ sự giúp đỡ nào
Avner
vì vậy nếu tôi hiểu bạn một cách chính xác - mỗi khi tôi viết một cái gì đó bằng cách sử dụng ObjectOutputStream tôi nhận được chi phí nghiêm trọng cho mỗi viết. ví dụ nếu tôi viết một int, một đoạn ngắn, một byte và sau đó một chuỗi Tôi nhận được 4 bộ dữ liệu bổ sung cho mỗi mục tôi viết? – Avner
Không. Chỉ có phương thức writeObject() mới thêm tiêu đề kiểu. Phương thức writeUTF() thêm một tiền tố chiều dài 2 byte. Các phương thức writeXX() nguyên thủy không thêm bất kỳ chi phí nào. Đọc tài liệu API để biết chi tiết. –
Cũng lưu ý rằng thông tin loại là cho mỗi đối tượng. Đối với một đối tượng bao gồm cơ bản của một mảng nguyên thủy (chẳng hạn như BitSet), chi phí là hằng số, bất kể mảng lớn như thế nào. –