Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Елена77
0 / 0 / 1
Регистрация: 27.10.2012
Сообщений: 93

Запись двоичного файла

27.04.2013, 21:44. Показов 910. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня такой вопрос. Есть двоичный файл в формате txt, состоящий из нескольких целых чисел. Создала поток, который читает с помощью цикла эти числа и записывая их в переменную e, которая в свою очередь заносится в другой двоичный файл. Записывать аналогичные числа я научилась, а теперь мне нужно при определённом условии отбирать эти числа(например только чётные). Но просто так эта переменная e не используется, вернее она содержит в себе тип ... не целочисленный(вроде бы long)... Подскажите пожалуйста, как... вытащить тот тип чисел что я вижу когда открываю созданный файл в текстовом редакторе... вот программа...

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
using System.IO;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
 
            Console.WriteLine("Введите количество целых чисел");
            int n = Convert.ToInt32(Console.ReadLine());
            
            BinaryWriter fout = new BinaryWriter(new FileStream(@"D:\df\11.txt", FileMode.Create));
        
          
            Random rand = new Random();
            
            for (int i = 0; i < n; i++)
            {
              fout.Write(rand.Next(100)+"\t");
            }
            
            fout.Close();
            
 
            FileStream f = new FileStream(@"D:\df\11.txt", FileMode.Open);
            BinaryReader inBin = new BinaryReader(f);
            
            FileStream t = new FileStream(@"D:\df\22.txt", FileMode.Create);
            BinaryWriter outBin = new BinaryWriter(t);
 
            try
            {
                for (int u = 0; u < n; u++)
                {
                    
                    int e = inBin.ReadInt32();
 
 
 
                    
 
                    
                    Console.WriteLine(e);
                   
                    outBin.Write(e);
                
                }
 
 
                 
            }
            catch (EndOfStreamException e) { }
            Console.ReadKey();    
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.04.2013, 21:44
Ответы с готовыми решениями:

Создание, чтение и запись двоичного файла
Всем доброго время суток. нужно написать программу,которая напрямую манипулирует байтами файла,...

Перевод из двоичного в десятичную запись число
Дана строка, изображающая двоичную запись целого положительного числа. Вывести строку, изображающую...

Дано задание: "Класс двоичного файла, производный от fstream". О чем оно
Получил задание на курсовую работу : Класс двоичного файла, производный от fstream. Двоичный...

10
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
27.04.2013, 22:28
Как-то вы всё сумбурно описываете.
Цитата Сообщение от Елена77 Посмотреть сообщение
просто так эта переменная e не используется, вернее она содержит в себе тип ... не целочисленный(вроде бы long)...
Если вы пишете в файл int, то int-ом он и останется. Компьютер - это не шляпа фокусника, куда он бросает носовые платки, а достаёт оттуда кроликов.
Можно узнать назначение "\t" строке №20?
И напишите оригинал вашего задания, ибо в вашем пересказе я потерялся.
2
 Аватар для Елена77
0 / 0 / 1
Регистрация: 27.10.2012
Сообщений: 93
27.04.2013, 22:49  [ТС]
Вот задание: Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g те компоненты файла f, которые являются четными. А "/t" это разделитель между числами, как я полагаю... в интернете был такой пример. Спасибо за отклик!
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
27.04.2013, 23:09
Цитата Сообщение от Елена77 Посмотреть сообщение
Спасибо за отклик!
Пока ещё не за что.
Для начала уберите это "\t". И запустите программу.

Добавлено через 6 минут
Замените строки 44, 46 на
C#
1
2
3
4
5
if (e % 2 == 0)
  {
      outBin.Write(e);
      Console.WriteLine(e);
  }
Добавлено через 3 минуты
У меня работает как надо. Жду вашего результата.

Добавлено через 5 минут
Ой нет. Вроде не как надо.
1
 Аватар для Елена77
0 / 0 / 1
Регистрация: 27.10.2012
Сообщений: 93
27.04.2013, 23:14  [ТС]
Убрала, запустила, теперь в консоли выводятся нормальные числа до 100 из ГСЧ, а... создающиеся файлы содержат нечитаемые символы-видимо это и правильно.
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
27.04.2013, 23:20
Цитата Сообщение от Елена77 Посмотреть сообщение
нечитаемые символы-видимо это и правильно.
Конечно, вы ведь не с текстовым представление работаете.
Только Посмотрите на файл 22.txt в проводнике Windows. У меня он имеет размер 0. Это значит, что в него ничего не записалось. А что у вас?

Добавлено через 3 минуты
Хм, а сейчас он уже не пуст. Правда я колдовал тут пока.
1
 Аватар для Елена77
0 / 0 / 1
Регистрация: 27.10.2012
Сообщений: 93
27.04.2013, 23:25  [ТС]
Что-то прояснилось! Буду разбираться дальше... Возможно даже что задача решена. СПАСИБО!

Добавлено через 2 минуты
Да, у меня он тоже не пустой. А как вы проверяете что записано? По выводу на консоль?....
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
27.04.2013, 23:30
Теперь. Вообще говоря, расширение txt применяется к текстовым файлам. В вашем случае будет уместно, например, расширение .dat
По поводу бинарных потоков. Настоятельно советую прочесть Шилдта "C# 4.0 Полное руководство" (во всяком случае у меня такое название), главу 14 "Применение средств ввода-вывода". Тогда многое прояснится, и не станете добавлять "\t", потому, что увидели это в чужом примере.

Добавлено через 4 минуты
Цитата Сообщение от Елена77 Посмотреть сообщение
По выводу на консоль?....
Ну да. Бинарные файлы бесполезно читать блокнотом. (Во всяком случае на вашем уровне.)
Цитирую (не Шилдта):
"Двоичные файлы хранят данные в том же виде, в котором они представлены в оперативной памяти, то есть во внутреннем представлении. Двоичные файлы не применяются для просмотра человеком, они используются только для программной обработки."

Чтобы убедиться, что выходной файл содержит именно то, что вам нужно его нужно опять прочитать программой, так же как вы читаете файл 11.txt
1
 Аватар для Елена77
0 / 0 / 1
Регистрация: 27.10.2012
Сообщений: 93
27.04.2013, 23:41  [ТС]
СПАСИБО ОГРОМНОЕ!
0
 Аватар для memphis
740 / 284 / 83
Регистрация: 12.12.2012
Сообщений: 564
27.04.2013, 23:47
Не за что.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
28.04.2013, 07:19

Не по теме:

Цитата Сообщение от memphis Посмотреть сообщение
Компьютер - это не шляпа фокусника, куда он бросает носовые платки, а достаёт оттуда кроликов.
в мемориз! :DD



Теперь. Вообще говоря, расширение txt применяется к текстовым файлам. В вашем случае будет уместно, например, расширение .dat
А я по-старинке использовал .bin

Добавлено через 1 минуту
Елена77, на самом деле, можете любой формат придумать, хоть .elena77format (хотя ОС плохо жуют длинные строки расширения), представление данных от этого не меняется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2013, 07:19
Помогаю со студенческими работами здесь

Создать Bitmap из части двоичного файла
Есть двоичный файл. Он открыт через BinaryReader. Оттуда прочитаны некоторые данные. Далее...

Вывести данные из двоичного файла
Программа создает массив из объектов класса - количество элементов массива пользователь вводит с...

Удвоение байтов двоичного файла с насыщением
Здравствуйте! Наткнулся сегодня на следующую задачу: &quot;Написать программу, удваивающую каждый...

Классы для редактирования двоичного файла с настройками радиостанции
Подскажите, есть задача: нужно редактировать файл. Есть программа для программирования радиостанций...

Получение двоичного представления числа
У меня есть число типа int в памяти компьютера оно (как собственно и вообще все) хранится как...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru