Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/89: Рейтинг темы: голосов - 89, средняя оценка - 4.79
 Аватар для Unifan
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40

Зачем нужно закрывать файл?

20.08.2014, 17:17. Показов 18258. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Зачем надо в конце выполнения программы использовать такую команду?
stream.close();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.08.2014, 17:17
Ответы с готовыми решениями:

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

Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить?
Вот еще один вопрос зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может...

Что такое h -файл и obj-файл?Зачем они нужны?
1.Что такое h -файл и obj-файл?Зачем они нужны?

15
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.08.2014, 17:27
Лучший ответ Сообщение было отмечено Jupiter как решение

Решение

Unifan, А почему бы и нет? Несмотря на то, что в деструкторе он все равно закроется, можно закрыть и явно.
Например дабы переоткрыть с другим файлом, либо же сохранить изменения, которые будут читать сразу после закрытия файла, да много вариантов использования.
1
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
20.08.2014, 17:31
Цитата Сообщение от Unifan Посмотреть сообщение
Зачем надо в конце выполнения программы использовать такую команду?
stream.close();
ну я в работе с файлами не очень шарю. Но если например программа постоянно работает, и открывает файлы чтото там делает. Не закрывая файл после накапливается в памяти все открытие файлы и будет все висеть или вообще вылетит. Мое предположение
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.08.2014, 17:31
если stream это объект fstream/ifstrea/etc то можно и не закрывать, оно закроется в деструкторе. для чего это надо? на каждый открытый файл ОС выделяет дескриптор по которому идентифицируется этот файл в программе и все операции в программе с этим дескриптором производят соответствующие действия с файлом.
дескриптор этот - это просто число, закрытие файла подразумевает завершение всех операций с файлом и возвращение дескриптора обратно ОС чтобы та в свою очередь могла выдать его при следующем открытии файла.
1
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
20.08.2014, 17:52
К тому же close() еще проталкивает всю незаписанную информацию из внутренних буферов потоковых объектов в место назначения.
1
21.08.2014, 09:17

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
на каждый открытый файл ОС выделяет дескриптор по которому идентифицируется этот файл в программе и все операции в программе с этим дескриптором производят соответствующие действия с файлом.
дескриптор этот - это просто число, закрытие файла подразумевает завершение всех операций с файлом и возвращение дескриптора обратно ОС чтобы та в свою очередь могла выдать его при следующем открытии файла.
Звучит как рекомендация экономии дескрипторов.

0
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
21.08.2014, 11:36
Лучший ответ Сообщение было отмечено Unifan как решение

Решение

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Звучит как рекомендация экономии дескрипторов
А вспомни Win 3.11 и 95...
там под оконные переменные (внутренние, не только дескрипторы) было 64к всего...
так что экономить надо.

Не по теме:

как то препод показывал программу, которая размером в 270 байт спутником управляла.
А сейчас что? :)



По теме:
Закрывают файл для того, чтобы освободить к нему доступ, записать несохраненные изменения. Просто после окончания его использования.
Если про конец программы... А если ты не освободишь файл, а потом программу дописывать будешь? вот тебе и утечка ресурсов в общем виде.
1
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
21.08.2014, 13:14
SatanaXIII, нормальное правило, у меня был случай падения проекта(запущенного в работу)из-за забытого закрытия файла
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
21.08.2014, 13:52
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Звучит как рекомендация экономии дескрипторов.
именно. на все есть лимит. а в unix-like OS этот лимит даже можно выставить под root-ом
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
22.08.2014, 09:14
Цитата Сообщение от krv Посмотреть сообщение
А вспомни
2
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
22.08.2014, 09:20
Цитата Сообщение от Unifan Посмотреть сообщение
Зачем надо в конце выполнения программы использовать такую команду?
это требование Файловых Систем,тех которые я знаю, файл открыт для одной программы,потока , для других недоступен
видел такое сообщение"Файл занят другой программой невозможно удалить"?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.08.2014, 09:49
Цитата Сообщение от Lynatik001 Посмотреть сообщение
ну я в работе с файлами не очень шарю. Но если например программа постоянно работает, и открывает файлы чтото там делает. Не закрывая файл после накапливается в памяти все открытие файлы и будет все висеть или вообще вылетит. Мое предположение
Бред. Запись в файловый поток - это запись именно в долговременную память и никаким переполнением оперативной она не воняет. Просто эта запись кешируется в буфере, физически расположенном в оперативе, но всё, что в этот буфер не влезает, сохраняется на диск. Открыть же новый файл под старым потоком, не закрыв ранее открытый и при это ещё и сохранив в оперативе кеш старого файла невозможно. Закрытие же файла - это всего лишь явное указание выполнить фактическую запись в долговременную память последней порции информации из буфера.
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
22.08.2014, 09:53
Цитата Сообщение от taras atavin Посмотреть сообщение
Закрытие же файла - это всего лишь явное указание выполнить фактическую запись в долговременную память последней порции информации из буфера.
при открытии выделяется дескриптор, они могут закончится, а закрытие файла делает 2 вещи, первая flush - т.е синхронизирует содержимое потока с файлом(т.е дописывает из потока) вторая, освобождает дескриптор,
Цитата Сообщение от taras atavin Посмотреть сообщение
указание выполнить фактическую запись в долговременную память последней порции информации из буфера.
вот вообще не факт что данные будут записаны......
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.08.2014, 09:58
Цитата Сообщение от aLarman Посмотреть сообщение
при открытии выделяется дескриптор, они могут закончится, а закрытие файла делает 2 вещи, первая flush - т.е синхронизирует содержимое потока с файлом(т.е дописывает из потока) вторая, освобождает дескриптор,
В одном потоке двух декрипторов одновременно не бывает.

Добавлено через 35 секунд
Цитата Сообщение от aLarman Посмотреть сообщение
вторая, освобождает дескриптор,
Ну правильно. А нафига его держать, если файл закрыт?

Добавлено через 45 секунд
Цитата Сообщение от aLarman Посмотреть сообщение
вот вообще не факт что данные будут записаны......
При таких ошибках можно за прикладное программирование вообще не браться.
0
22.08.2014, 10:16

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
При таких ошибках можно за прикладное программирование вообще не браться.
самокритика приветствуется :)

0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
22.08.2014, 10:19
Почему само?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2014, 10:19
Помогаю со студенческими работами здесь

Зачем нужно u--?
Как я понимаю это счетчик итераций !! но зачем он ?? #include <iostream> #include <stdio.h> #include <conio.h> using...

Чтение памяти другого процесса по таймеру: нужно ли закрывать хэндл процесса?
В моём варианте работает так: По таймеру (0,1 сек) определяю ID процесса по ехе-шнику, получаю хэндл процесса(открываю процесс) ...

Зачем закрывать поток чтобы записать данные в файл?
Не понимаю такую особенность. В книге об этом нигде не сказано, автор просто закрывает поток, не называя причин. Код public void...

Нужно ли закрывать файл
Есть ли практический смысл в закрытии файлов после работы с ними?

Зачем закрывать поток? (FileStream)
using System; using System.IO; class filestreamtest { static void Main(string args) { int i; ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru