У меня есть программа, которая пройдет и создаст несколько разных экземпляров класса. Я хочу написать подробности каждого экземпляра в файл с помощью DataOutputStream (это необходимое упражнение, я рассмотрю другие способы сделать это позже), но проблема в том, что я заметил, что DataOutputStream перезаписывает файл каждый раз, когда новый экземпляр создано и написано. Моя первая идея была каждый раз, когда был написан новый экземпляр, сначала используя DataInputStream, чтобы получить то, что находится в файле, сохранить его, а затем переписать его с новым экземпляром. Похоже, что это может запутаться очень быстро. Что было бы лучше всего для этого? Заранее спасибо.Управление байтами файлов с помощью DataOutput/InputStream
EDIT: Я постараюсь быть более конкретным в отношении того, что я пытаюсь сделать здесь. Когда я беру класс, который хочу записать в файл, сначала я буду использовать dataInputStream.readFully, чтобы получить все в файле. Я понимаю, что все байты хранятся в файле и сохраняются в массиве. Я хотел бы сравнить это с экземпляром класса, и если экземпляр совпадает с чем-то уже в файле, не выводите этот конкретный экземпляр (потому что он уже есть) в файл. В противном случае добавьте файл.
Я предполагаю, что это не делает никаких проверок для дубликатов (просто продолжает расти файл)? Мне нужно написать что-то, чтобы избавиться от обманов. – Benny
Это чисто добавляет к самому концу существующего файла. Если у вас есть что-то еще, я бы предложил изменить ваш вопрос или задать новый вопрос, включая более подробное объяснение ожидаемого или желаемого поведения (псевдокод или код также помогут). Тем не менее, вы также можете изучить JAXB или JavaBeans Serialization или другой аналогичный API, так как они уже решили проблему с корнем, которую вы пытаетесь решить (сериализация данных на диск). – rob
Я бы полностью использовал сериализацию, но это конкретное упражнение, с которым я пытаюсь работать. Я отредактировал вопрос, чтобы лучше объяснить и объяснить. благодаря – Benny