Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346

Как сделать изменяемое количество записей в файле

07.02.2016, 14:26. Показов 549. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Снова решил создать новую тему с таким вопросом. Подскажите пожалуйста решение. Есть файл , там хранятся объекты. Вначале я записываю в файл кол-во объектов.
Java
1
2
3
4
5
6
7
8
9
10
11
 try(FileWriter writer = new FileWriter("test.data", true))
                    {
                        writer.write(countEntry);
                        writer.close();
 
                    }
 
                    catch(IOException ex){
 
                        System.out.println(ex.getMessage());
                    }
потом сами объекты
Java
1
2
3
4
5
6
7
8
9
try {
                            FileOutputStream fos = new FileOutputStream("test.data",true);
                            ObjectOutputStream oos = new ObjectOutputStream(fos);
                            oos.writeObject(arr.get(arr.size()-1));
                            oos.close();
                            fos.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
Вопрос: как сделать так чтобы число записей объектов при добавлении одного объекта записывалось корректно, ведь если каждый раз создавать новый файл теряются объекты в файле , если добавлять в существующий файл , то оно вставит кол-во записей в любое место в файле и считать правильное число записей уже станет невозможно?
Я понимаю что можно циклом прогнать весь массив из памяти компа и записать весь цикл в файл, но может есть решение обойтись без цикла всего массива а добавления только одного объекта?

Добавлено через 13 минут
Т. е. как каждый раз писать кол-во записей в самое начало файла?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2016, 14:26
Ответы с готовыми решениями:

Как подсчитать количество записей в файле?
Есть файл, в нем хранится определенное количество структур размером sizeof(Student), необходимо подсчитать их количество. Пробовал вот так,...

Как узнать количество записей структуры в файле?
Помогите пожалуйста с вопросом: Как узнать количество записей структуры в файле?Желательно функцией,чтобы возвращала количество записей

Количество записей в файле
Есть файл Students.txt. В нем: 1) первая запись - число типа long, что означает общее количество записей в файле; 2) после - идут n...

6
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
07.02.2016, 15:01
Использовать не последовательный (FileWriter), а произвольный (RandomAccessFile) доступ файлу.
1
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
07.02.2016, 15:41  [ТС]
Что-то не могу найти как нормально записать и считать целое число? Подскажите пожалуйста.
0
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
07.02.2016, 15:57
writeByte(int val), writeShort(int val), writeInt(int val), writeLong(long val).

readByte(), readInt(), readLong(), readShort().

Сейчас
writer.write(countEntry); пишет short
0
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
07.02.2016, 16:05  [ТС]
нет, у меня countEntry int. Я делал так, но что-то не работает
запись
Java
1
2
3
4
5
6
7
8
9
10
11
12
try {
                            FileOutputStream fos = new FileOutputStream("test.data", true);
                            fos.write(countEntry);
                            ObjectOutputStream oos = new ObjectOutputStream(fos);
                            for (Car car : arr) {
                                oos.writeObject(car);
                            }
                            oos.close();
                            fos.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
считывание
Java
1
2
3
4
5
6
7
8
 try {
                        FileInputStream fis = new FileInputStream("test.data");
                        countEntry = fis.read();
                        fis.close();
                    } catch (IOException i) {
                        i.printStackTrace();
 
                    }
Добавлено через 3 минуты
не пойму то ли не записывает то ли не читает но переменная просто равна=0;
0
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
07.02.2016, 16:15
Цитата Сообщение от vifelso Посмотреть сообщение
у меня countEntry int
да, но тем не менее метод writer.write(countEntry) пишет short точнее char т.е. 2 байта.

а вот эта строчка:
countEntry = fis.read();
читает один байт. Вероятно в этом проблема. В Java используется порядок байт big-endian т.е. первый байт в файле скорее всего нулевой (если записанное число меньше 256).
0
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
07.02.2016, 16:34  [ТС]
В общем у меня всё работает когда кол-во записей в другом файле, так и сделал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2016, 16:34
Помогаю со студенческими работами здесь

Как сделать так что бы количество записей в таблице держалось постоянно на одном уровне?
как сделать так что бы количество записей в таблице держалось постоянно на одном уровне те допустим 50 записей

Изменяемое количество отображаемых div блоков в мобильной версии сайта
привет. ситуация такая: при просмотре сайта с мобильника количество отображаемых блоков уменьшается, разумеется (это хорошо, ведь...

Как сделать заданное в html - файле количество полей с использованием php ? (форма)
Работаю с денвером. Идея такая: Захожу в html, там уже готовое поле. Ввожу в него количество полей которое должно нарисоваться. Нажимаю...

Удалить заданное количество записей из указанного места в файле
Имеется файл, удалить заданное количество строк с определенной строки (включая её). Заранее Спасибо!

Разделить количество записей из одной таблицы на количество записей из другой
Всем привет! Скажите пожалуйста, можно ли в Oracle сделать что то подобное Select * from (select (count(поле)) from...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru