Нет такого понятия, как текстовый файл на носителе данных (например, HDD, RAM, Flash и т. Д.).Компьютеры всегда хранят все в двоичном формате (т.е. байты). Текстовый файл - это человеческое понятие.
Взяв ваш пример выше:
1;asd1324;2019-05-22 18:28:56;0;0;
2;asd1324;2019-05-22 18:28:56;0;0;
3;asd1324;2019-05-22 18:28:56;0;0;
4;asd1324;2019-05-22 18:28:56;0;0;
5;asd1324;2019-05-22 18:28:56;0;0;
6;asd1324;2019-05-22 18:28:56;0;0;
Вот как первые две строки выглядят для компьютера (в HEX):
313B6173 64313332 343B3230 31392D30 352D3232 2031383A 32383A35 363B303B 303B0A
323B6173 64313332 343B3230 31392D30 352D3232 2031383A 32383A35 363B303B 303B0A
Обратите внимание, как заканчивается строка (0A), что является символом конца строки для большинства систем * nix.В Windows это будет 0D0A (или 0A0D?), А в Mac это будет 0D.
Теперь, чтобы изменить строку, она не должна быть длиннее оригинальной, иначе вы перезапишетена начало следующей строки.Предположим, что вы изменили первую строку с
1;asd1324;2019-05-22 18:28:56;0;0;
на
1;asd1324;2019-05-22 18:28:56;0;01;
, в результате вы получите (первые 2 строки):
313B6173 64313332 343B3230 31392D30 352D3232 2031383A 32383A35 363B303B 30313B
323B6173 64313332 343B3230 31392D30 352D3232 2031383A 32383A35 363B303B 303B0A
, так что ваш файл будеттеперь будет читать как:
1;asd1324;2019-05-22 18:28:56;0;01;2;asd1324;2019-05-22 18:28:56;0;0;
3;asd1324;2019-05-22 18:28:56;0;0;
4;asd1324;2019-05-22 18:28:56;0;0;
5;asd1324;2019-05-22 18:28:56;0;0;
6;asd1324;2019-05-22 18:28:56;0;0;
Теперь у вас есть 5 строк вместо 6, поскольку вы перезаписали символ завершения строки исходной первой строки.
Со всемиТем не менее, изменение текстового файла без перезаписи может быть очень утомительной и сложной задачей.Это намного быстрее и проще переписать целое с вашими модификациями.В противном случае военный учебный лагерь будет походить на прогулку в парке по сравнению.