Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Откуда берутся данные для записи методом Flush StreamWriter?

28.10.2018, 09:44. Показов 2907. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Откуда берутся данные для записи методом Flush StreamWriter?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.10.2018, 09:44
Ответы с готовыми решениями:

Откуда берутся данные для POST запроса
Добрый вечер. Пытаюсь повторить POST запрос. Загружаю страницу в браузере. В инструментах разработчика нахожу POST запрос. Понимаю...

Откуда берутся записи в регистре ЗначенияПоказателейОтчетности
УНФ 1.6.13 Врут показатели оплаты налогов по страховым взносам за себя ИП на ЕНВД. Началось с прошлого квартала, задвоился долг по ФФОМС, в...

Откуда в Extern char** environ; берутся данные
не могу разобраться, откуда в extern char** environ;берутся данные, где хранится динамическое значение environ? #include...

21
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
28.10.2018, 09:58
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Откуда берутся данные для записи методом Flush StreamWriter?
StreamWriter имеет внутренний буфер, куда пишутся данные. Как только размер буфера превышается, или вызывается метод Flush, Dispose или Close, то StreamWriter скидывает буфер в вышележащий поток.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
28.10.2018, 09:59
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Откуда берутся данные для записи методом Flush StreamWriter?
Из данных, которые передаются в метод Write/WriteLine.
Сначала они копируются во внутренний буффер, а когда он заполняется — сливаются уже по назначению.
Если буфер заполнен не полностью и больше записывать нечего, то вызывается метод Flush для отправления по адресу оставшихся в буфере данных.
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.10.2018, 10:05  [ТС]
kolorotur, зачем вообще сделали через буфер? Какие преимущества такого подхода?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
28.10.2018, 10:07
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
зачем вообще сделали через буфер?
IO — штука медленная, накладно каждый байт отсылать (представьте запись на диск, где время исчисляется миллисекундами).
Лучше накопить по-больше и отослать разом.
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.10.2018, 10:22  [ТС]
По быстрому написал на PascalABC.Net:
Pascal
1
2
3
4
5
6
7
8
uses System.IO;
 
begin
  var sw := new StreamWriter('Example.txt');
  foreach var item in '123' do
    sw.Write(item);
  sw.Close();
end.
Цитата Сообщение от kolorotur Посмотреть сообщение
а когда он заполняется — сливаются уже по назначению
Как у меня в файл цифры записались? Я же Flush не вызывал.

Кстати, а как размер буфера узнать?

Добавлено через 8 минут
(Вопрос актуален.)

Добавлено через 5 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System.IO;
 
namespace CSrharpApplicationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var sw = new StreamWriter("Example.txt"))
            {
                foreach (var item in "123")
                    sw.Write(item);
            }
        }
    }
}
Ничего не записывается в файлик.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.10.2018, 10:24  [ТС]
Вот архив.
Вложения
Тип файла: rar CSrharpApplicationTest.rar (116.0 Кб, 5 просмотров)
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
28.10.2018, 10:27
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Как у меня в файл цифры записались?
Он автоматически вызывается при вызове Close — как сказал выше товарищ Storm23.

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
как размер буфера узнать?
Размер буфера по умолчанию является деталью реализации и зависит от типа потока — обычно 1024 символа или 4096 байт.
Но его можно задать свой через соответствующий конструктор.

Добавлено через 2 минуты
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Ничего не записывается в файлик.
Нормально все записывается.
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.10.2018, 10:27  [ТС]
Странно. У меня файлик пуст (смотрю в VS).
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.10.2018, 10:31  [ТС]
Вот:
Миниатюры
Откуда берутся данные для записи методом Flush StreamWriter?  
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.10.2018, 10:54  [ТС]
Как решить эту проблему? Что я не так сделал?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
28.10.2018, 11:01
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Как решить эту проблему? Что я не так сделал?
Попробуйте после цикла явно закрыть поток.
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.10.2018, 11:04  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System.IO;
 
namespace CSrharpApplicationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var sw = new StreamWriter("Example.txt"))
            {
                foreach (var item in "123")
                    sw.Write(item);
                sw.Close();
            }
        }
    }
}
Не помогло.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
28.10.2018, 11:05
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Как решить эту проблему?
Вы смотрите не на тот файл.
Файлик, который вы показали в VS, находится в папке проекта, однако при сборке решения файл копируется в выходную папку проекта (bin/debug, bin/release), c которым, собственно, приложение и работает.
Зайдите в bin/debug и проверьте содержимое Example.txt.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
28.10.2018, 11:09
Нет, причина не в этом.
Вы не тот файл смотрите. У Вас в решении в проекте присоединён файл Example.txt из папки проекта. Но вы при записи не указываете путь к файлу и, поэтому, он будет писаться в папку exe-шника. В данном случае в папку Debug/bin. Проверьте в этой папке есть файл Example.txt и он нормально записан.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
28.10.2018, 11:10
Я могу ошибаться по поводу копирования файла, так как вы могли не установить свойство Copy to Output Directory в нужное значение, но в таком случае ваше приложение вообще бы упало при запуске. Поэтому, скорее всего, вы смотрите не на тот файл.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.10.2018, 11:12  [ТС]
Как понять, что некоторый файлик будет скопирован в bin/debug, bin/release?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,110
Записей в блоге: 2
28.10.2018, 11:15
Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Как понять, что некоторый файлик будет скопирован в bin/debug, bin/release?
По указанному пути. Если путь не указан, то текущей считается папка где расположен exe-шник. В режиме Debug - это bin/debug, в режиме Release - bin/release
1
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
28.10.2018, 11:16
Надо посмотреть свойства элемента файла в Solution Explorer-е (выбрать элемент и нажать F4, как вариант).
Конкретная папка определяется конфигурацией сборки проекта.
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
28.10.2018, 11:19  [ТС]
В свойствах есть "Копировать в выходной каталог". И там выбрано "Не копировать." Получается, что это означает, что файл будет скопирован в выходной каталог, только если к нему в программе не указан полный путь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2018, 11:19
Помогаю со студенческими работами здесь

Программа для тестирования: откуда берутся ответы?
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,...

Откуда берутся 3 часа
$lost_time = date("H:i:s", $result - $res); Нужно перевести в такой формат оставшееся время. в $result = (int)25; //cекунд ...

Откуда берутся функции JS
Пришел с Java, там есть JDK(Java Development Kit). То есть просто качаешь архив с написаными функциями и пользуешься ими. Как это...

Откуда берутся деньги?
Я хотел бы спросить у более опытных товарищей, программистов, инженеров. Откуда берутся деньги? Есть ресурс, им пользуются люди. Ресурс...

Откуда берутся повторения
Почему, когда я запускаю программу в 1 поток, то повторений нету, а когда в 5 то время от времени аккаунты повторяются(Если соединение не...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru