• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Запись данных из консоли в файл C#

akiiratik

One Level
27.10.2020
5
1
BIT
0
Доброго времени суток, возник вопрос в следующем.
Реализовал сервер для мессенеджера на ASP.NET. Отправка сообщений с помощью POST запросов JSON.

Нужно придумать способ сохранения сообщений в файл. Можно даже объяснить, как реализовать самый шакальный - сохранения того, что выводит сервер при получении POST-запроса в командной строке. Пример моего решения:
C#:
ms.Add(msg.username, msg.text);
           Console.WriteLine($"{msg.username}: {msg.text} ({ms.messages.Count})"); //Вывод сообщений в консоле сервера

Выглядит этот отрывок вот так. Пытался играться с StreamWriter, ничего не выводит в файл.
C#:
using (var file = new StreamWriter(@"D:\preactice\server\server\myFile.txt"))
            {
                ms.Add(msg.username, msg.text);
                Console.WriteLine($"{msg.username}: {msg.text} ({ms.messages.Count})"); //Вывод сообщений в консоле сервера

                // Читаем текст, введенный пользователем.
                var line = Console.ReadLine();

                    // Пишем в файл.
                    file.WriteLine(line);
                
            }
 

domebr

Green Team
07.06.2020
40
5
BIT
2
А не выводит потому-что нужно применить такую штуку как file.Flush();. Сам долго мучился с этим.
Кроме того отлично помогает закрытие соединения file.Close();.
Происходит это потому-что ты командой file.WriteLine(line); Говоришь запихай эту строчку в файл. А он такой, ок, но я подожду пока ты мой буфер заполнишь и когда ты это сделаешь я все закину в файл, а потом разрываешь соединение принудительно и он такой ну да, ну да пошел я нахер.
И поступает с тобой также как и ты с ним. А Flush() говорит почистить этот буфер соответственно заполнить файл данными не закрывая соединения.
Я всегда пользуюсь связкой flush + close перед тем как закончить работу с файлом, мне так спокойней)
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!