Только переписать все заново.
Альтернативное решение - предусмотреть для цифры сразу все нужные разряды (в данном случае 7), и даже если нужно записать в это место меньше - дополнять пробелами.
К сожалению размер файла в этом режиме нельзя сделать меньше. Поэтому и остаются незатертые символы. Вариантов два: прежде чем записывать новые строки, затереть файл нуль-байтами или пробелами, а затем писать сообщение.
Второй вариант создать вместо текстового файла, бинарный, с фиксированной длинной. У Вас именно тот случай, когда в файле хранятся два и только два числа, поэтому длина файла будет всегда одинаковой.
Если откроете файл только для записи, то все данные в существующем файле будут затерты, файл станет нулевой длинны.
Откройте, запишите и закройте. Две строчки, много времени не надо. А в других программах проверка на возможность открытия файла, если не открылся то
через время повторная попытка.
Добрый день. Возник вопрос при множественной работе с одним файлом.
Есть файл Abc.txt, который имеет текст:
Нужно стереть весь уже существующий текст и вписать новый:
Программно файл открывается с флагами "READ/WRITE/TXT". При работе с ним сначала нужно прочесть его данные, а потом перезаписать.
Если просто воспользоваться функцией FileWrite (), то новый текст будет добавлен в конец файла. Не годится.
Когда пользуемся смещением позиции в начало файла через функцию FileSeek (SEEK_SET), вроде старый текст замещается новым. То, что нужно.
Но если новый текст по количеству символов (байтов) меньше старого, то часть старого текста остается:
Как все-таки заместить файл новыми данными и сделать это правильно?
Надо блокировать файл при записи, чтобы никто не смог читать, пока запись не закончится. Иначе что вы прочитаете?
При чтении надо делать проверку на ошибку при открытии. Так-что при записи открываем файл для записи, при этом файл очистится.
Не зачет. Файл используется для многопоточного чтения/записи и его блокировка в режиме записи неприемлема.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день. Возник вопрос при множественной работе с одним файлом.
Есть файл Abc.txt, который имеет текст:
Нужно стереть весь уже существующий текст и вписать новый:
Программно файл открывается с флагами "READ/WRITE/TXT". При работе с ним сначала нужно прочесть его данные, а потом перезаписать.
Если просто воспользоваться функцией FileWrite (), то новый текст будет добавлен в конец файла. Не годится.
Когда пользуемся смещением позиции в начало файла через функцию FileSeek (SEEK_SET), вроде старый текст замещается новым. То, что нужно.
Но если новый текст по количеству символов (байтов) меньше старого, то часть старого текста остается:
Как все-таки заместить файл новыми данными и сделать это правильно?