Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 19

Бинарный файл в формах

13.01.2017, 17:47. Показов 3259. Ответов 3

Студворк — интернет-сервис помощи студентам
Что я делаю не так.Типа я хочу сделать так что бы вот этот код работал в формах, считывал из исходного файла последовательность чисел и записывал в новый бинарный файл только положительные(используя openfiledialog, savefile dialog):
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
using System.IO;
 
namespace BinaryWR
{
    class Program
    {
        static void Main(string[] args)
        {
            string fileName = "1.bin";
            int[] arr = { 1, -2, 3, 4, -5, 6, 7, -8, 9 };
            WritePositiveIntegers(fileName, arr);
            int[] arr2 = ReadNumbers(fileName);
            Console.WriteLine(string.Join(" ", arr2));
            Console.ReadKey();
        }
 
        static void WritePositiveIntegers(string file, int[] arr)
        {
            using (Stream stream = new FileStream(file, FileMode.Create))
            {
                using (BinaryWriter writer = new BinaryWriter(stream))
                {
                    foreach (int n in arr)
                    {
                        if (n>0)
                        {
                            writer.Write(n);
                        }
                    }
                }
            }
        }
 
        static int[] ReadNumbers(string file)
        {
            int[] arr;
            using (Stream stream = new FileStream(file, FileMode.Open))
            {
                using (BinaryReader reader = new BinaryReader(stream))
                {
                    int count = (int)stream.Length / 4;
                    arr = new int[count];
                    for (int i = 0; i < count; i++)
                        arr[i] = reader.ReadInt32();
                }
            }
            return arr;
        }
 
    }
}
я попробовал:
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
private void Startbutton2_Click(object sender, EventArgs e)
        {
            string fileName = "in2.bin";
            string fileName1 = "2.bin";
            if (openFileDialog1.ShowDialog() != DialogResult.OK)
            {
                BinaryReader br = new BinaryReader(File.OpenRead(fileName1), Encoding.Default);
                ReadNumbers(fileName);
            }
            int[] arr = {1, -2, 3, -4, -5, 6, -7, -8, 9};
            WritePositiveIntegers(fileName, arr);
            int[] arr2 = ReadNumbers(fileName);
            if (saveFileDialog1.ShowDialog() != DialogResult.OK)
            {
                    FileStream File = new FileStream(saveFileDialog1.FileName, FileMode.Create);
                    BinaryWriter BW = new BinaryWriter(File);
                    BW.Write(string.Join(",",arr2));
            }
        }
        public static int[] ReadNumbers(string file)
        {
            int[] arr;
            using (Stream stream = new FileStream(file, FileMode.Open))
            {
                using (BinaryReader reader = new BinaryReader(stream))
                {
                    int count = (int)stream.Length / 4;
                    arr = new int[count];
                    for (int i = 0; i < count; i++)
                        arr[i] = reader.ReadInt32();
                }
            }
            return arr;
        }
        public static void WritePositiveIntegers(string file, int[] arr)
        {
            using (Stream stream = new FileStream(file, FileMode.Create))
            {
                using (BinaryWriter writer = new BinaryWriter(stream))
                {
                    foreach (int n in arr)
                    {
                        if (n > 0)
                        {
                            writer.Write(n);
                        }
                    }
                }
            }
        }
не выходит.Буду благодарен за помощь.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.01.2017, 17:47
Ответы с готовыми решениями:

Dictionary serialization: нужно провести сереализацию в бинарный файл и xml файл
Помогите сереализоровать словарь вида: public class BankManager : Dictionary&lt;String, Bank&gt; {} Где Bank - сереализируемый объект....

Сконвертировать текстовый файл в бинарный, переписать только положительные числа в другой бинарный файл
Бинарные файлы!! Помогите пожалуйста. Дано бинарный файл ( данные сначала в текстовом, конвертирую в бинарный). Без использования другого...

Записать в бинарный файл массив объектов Student (бинарный файловый ввод/вывод)
Здравствуйте. Стоит задача записать в бинарный файл массив объектов student: class student { string firstname,lastname, group; ...

3
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
13.01.2017, 19:03
Лучший ответ Сообщение было отмечено MikeSD как решение

Решение

MikeSD,
1) Исходный файл нужно создать в первую очередь
метод, записывающий массив в файл:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public static void WriteAll(string file, int[] arr)
{
    using (Stream stream = new FileStream(file, FileMode.Create))
    {
        using (BinaryWriter writer = new BinaryWriter(stream))
        {
            foreach (int n in arr)
            {
                    writer.Write(n);
            }
        }
    }
}
Вызов метода щелчком по кнопке:
C#
1
2
3
4
5
6
7
8
private void btnCreate_Click(object sender, EventArgs e)
{
    int[] arr = { 1, -2, 3, -4, -5, 6, -7, -8, 9 };
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        WriteAll(saveFileDialog1.FileName, arr);
    }
}
2) Теперь нужно читать и сохранять нужные числа в другой файл
Методы ReadNumbers и WritePositiveIntegers можно использовать без изменений.
Вызов методов щелчком по кнопке:
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void btnReadNSave_Click(object sender, EventArgs e)
{
    int[] arr=null;
    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        arr = ReadNumbers(openFileDialog1.FileName);
    }
    if (saveFileDialog1.ShowDialog() == DialogResult.OK && arr!=null)
    {
        WritePositiveIntegers(saveFileDialog1.FileName, arr);
    }
}
1
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 19
14.01.2017, 01:00  [ТС]
О вы же, спасибо)

Добавлено через 5 часов 44 минуты
Вроде бы во всем разобрался. Но есть еще один вопросик который я забыл спросить.А чем все таки можно открыть бинарный файл чтобы увидеть в нем цифры а не квадраты и и какие-то буквы??
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18291 / 14214 / 5368
Регистрация: 17.03.2014
Сообщений: 28,891
Записей в блоге: 1
14.01.2017, 08:15
Цитата Сообщение от MikeSD Посмотреть сообщение
А чем все таки можно открыть бинарный файл чтобы увидеть в нем цифры а не квадраты и и какие-то буквы??
С помощью hex viewer/editor который умеет показывать байты как числа
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.01.2017, 08:15
Помогаю со студенческими работами здесь

Повреждается бинарный файл при попытке его записи в другой файл
Делаю автоматизированную сборку. Для этого нужно соединить три файла в один новый. Но почему-то каждый раз в exe-файле появляется лишний...

Не получается прочесть правильно текстовый файл в структуру а затем в бинарный файл
Нужно просто прочесть файл в структуру данных а потом оттуда записать в бинарный файл Вот как выглядит текстовый файл: 11122 Mary...

Дан символьный файл f. Получить копию файла f в файле q. Это должен быть бинарный файл
Дан символьный файл f. Получить копию файла f в файле q. Это должен быть бинарный файл. ПОмогите пожалуйста!!!

Записать в бинарный файл произвольные натуральные числа. Переписать в другой файл те элементы, которые кратны К
Помогите, пожалуйста! есть задание: Записать в файл N произвольных натуральных чисел. Переписать в другой файл те элементы, которые...

Данные записать в файл F1.txt, затем прочитать оттуда, обрабатывались и записывались в бинарный файл F2.bin с проверкой
Никак не получается отладить в BC++ 3.1. Как сделать в классах так, чтобы введённые данные записывались в файл F1.txt, затем читались...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru