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

Сжатие данных, запись в бинарный файл и его чтение

22.04.2018, 05:54. Показов 4352. Ответов 9

Студворк — интернет-сервис помощи студентам
Может кто то объяснить, каким образом строку, состоящую из последовательности 0 и 1 записать в бинарный файл?
Я запрограммировал алгоритм Хаффмана, по нему закодировал текст и в итоге имею строку закодированного текста, но если ее просто записать в файл, то естественно его размер раз в 20 больше.
Я записал в бинарный файл следующим образом:
Java
1
2
3
4
5
6
7
FileChooser fileChooser = new FileChooser();
   fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Binary", "*.bin"));
   FileOutputStream fileOutputStream = new FileOutputStream(fileChooser.showSaveDialog(window));
   DataOutputStream outputStream = new DataOutputStream(fileOutputStream);
   outputStream.writeChars(Main.string_ready_encode);
   outputStream.close();
   fileOutputStream.close();
Затем пытаюсь его вернуть в строку-последовательность 0 и 1 вот так:
Java
1
2
3
4
5
6
7
8
9
10
FileChooser fileChooser = new FileChooser();
   fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Binary", "*.bin"));
   FileInputStream fileInputStream = new FileInputStream(fileChooser.showOpenDialog(window));
   DataInputStream inputStream = new DataInputStream(fileInputStream);
 
   while (inputStream.available() != 0) {
      System.out.print((char) inputStream.readByte());
   }
   inputStream.close();
   fileInputStream.close();
Кажется работает, но тем не менее файл выходной больше исходного в несколько раз. Что я делаю не так?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.04.2018, 05:54
Ответы с готовыми решениями:

Запись в бинарный файл, его чтение и редактирование
Здравствуйте, возникла проблема с записью данных в бинарный файл. Есть некая структура, по которой читается файл, эти данные выводятся в...

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon Donovan, 150, A Hulk Hogan , 100, M Duke Nukem, 50,...

Чтение и запись в бинарный файл
Добрый день! Помогите разобраться. Надо записать информацию в бинарник, а потом прочесть из него и вывести на экран. Вроде все делаю...

9
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
22.04.2018, 09:00
Цитата Сообщение от Blood Red Rose Посмотреть сообщение
Что я делаю не так?
1) Не используешь try-with-resources
2) Непонятно зачем наворачиваешь Data*Stream
3) Неправильно читаешь из потока: метод [ulr=https://docs.oracle.com/javase/10/docs/api/java/io/InputStream.html#available()]available[/url] не для этого предназначен

Не знаю, что представляет из себя Main.string_ready_encode
0
1 / 1 / 1
Регистрация: 02.04.2016
Сообщений: 111
22.04.2018, 09:03  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
1) Не используешь try-with-resources
2) Непонятно зачем наворачиваешь Data*Stream
3) Неправильно читаешь из потока: метод [ulr=https://docs.oracle.com/javase/10/docs/api/java/io/InputStream.html#available()]available[/url] не для этого предназначен
Не знаю, что представляет из себя Main.string_ready_encode
Main.string_ready_encode это строка с кодом, последовательность 0 и 1 (закодированный текст)
1) Впервые слышу про такое
2) Я перепробовал все, чтобы сделать то что нужно, на этом варианте остановился
3) Так что предназначено для записи в битовый файл и чтения из него последовательности 1 и 0?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
22.04.2018, 16:35
Цитата Сообщение от Blood Red Rose Посмотреть сообщение
1) Впервые слышу про такое
Ещё в Java 7 появилось, почти 7 лет назад…

Цитата Сообщение от Blood Red Rose Посмотреть сообщение
3) Так что предназначено для записи в битовый файл и чтения из него последовательности 1 и 0?
Ничего. Никто не читает битами. Все читают и пишут байтами.
0
1 / 1 / 1
Регистрация: 02.04.2016
Сообщений: 111
22.04.2018, 16:58  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
Ничего. Никто не читает битами. Все читают и пишут байтами.
Ну как записать в байтовый файл?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
22.04.2018, 17:15
https://stackoverflow.com/ques... le-in-java
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
22.04.2018, 23:26
Цитата Сообщение от Blood Red Rose Посмотреть сообщение
Ну как записать в байтовый файл?
OutputStream.write
0
1 / 1 / 1
Регистрация: 02.04.2016
Сообщений: 111
23.04.2018, 06:42  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
OutputStream.write
Хорошо, а как его считать в строку обратно?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
23.04.2018, 07:23
InputStream.read() -_-
0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
23.04.2018, 08:49
Blood Red Rose, Бро, тут все, что тебе нужно уже в готовом виде))
https://docs.oracle.com/javase... ential/io/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.04.2018, 08:49
Помогаю со студенческими работами здесь

Чтение и запись в бинарный файл
Записываю текст из Memo в бинарный файл, потом в другой программе пытаюсь считать текст из этого бинарного файла в Memo, но при считывании...

Запись/чтение бинарный файл
Подскажите, пожалуйста, где можно посмотреть оптимальный пример о записи и чтении списка объектов класса в бинарный файл? Да что там...

Чтение и запись в бинарный файл
Мой код должен решать следующую задачу: Даны два файла f 1 и f 2. Файл f 1-это инвентарный файл, содержащий сведения о том, сколько...

Чтение и запись в бинарный файл
Ребят nомогите мне nожалуйста. Я хочу nрочитать бинарный файл , в котором заnисаны данные в виде структуры, глянул в инете как читают и...

Запись в бинарный файл и чтение из него
Нужно записать в бинарный файл блоки, каждый по 512 байт. Структура блока: Слово Число. На слово отводится 508 байт, на число 4. После...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Вывод текста со шрифтом 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
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru