У меня есть BitSet и вы хотите записать его в файл - я наткнулся на решение использовать ObjectOutputStream с помощью метода writeObject.Запись BitSet в файл в java
Я смотрел на ObjectOutputStream в Java API, и увидел, что вы можете писать другие вещи (байты, INT, короткие и т.д.)
Я пытался проверить класс, так что я пытался записать байты в файл используя следующий код, но результат дает мне файл с 7 байтами вместо 1 байт
Мой вопрос: каковы первые 6 байтов в файле? почему они там?
мой вопрос относится к BitSet, потому что я не хочу начинать записывать много данных в файл и понимать, что у меня есть случайные байты, вставленные в файл, не зная, что это такое.
вот код:
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();
спасибо за любую помощь
Авнер
, так что если я правильно вас понимаю - каждый раз, когда я что-то пишу, используя ObjectOutputStream, я получаю серьезные накладные расходы для каждой записи. например, если я пишу int, короткий, байт, а затем строку Я получаю 4 набора дополнительных данных для каждого элемента, который я пишу? – Avner
№. Только метод writeObject() добавляет заголовок типа. Метод writeUTF() добавляет префикс длины в 2 байта. Примитивные методы writeXX() не добавляют никаких накладных расходов. Подробнее читайте в документе API. –
Также обратите внимание, что информация о типе - для каждого объекта. Для объекта, который состоит в основном из примитивного массива (например, BitSet), накладные расходы являются постоянными, независимо от того, насколько большой массив. –