QTextStream Maniuplation - PullRequest
       24

QTextStream Maniuplation

0 голосов
/ 29 ноября 2011

Я открываю файл и получаю QTextStream его. Затем я читаю поток построчно с помощью readLine (). Когда строка соответствует определенной строке, мне нужно заменить ее другой строкой. Мне нужно, чтобы строка полностью заменялась (то есть, если строка была «длинным словом», а я заменял ее на «слово», строка должна содержать только «слово» и «слово»).

В данный момент я использую seek (), а затем оператор <<, чтобы поместить мою строку в заданное место, но остатки последней строки остаются, поэтому у меня осталось что-то вроде «wordword». Как я могу предотвратить это и обеспечить полную замену всей предыдущей строки моей новой? </p>

1 Ответ

1 голос
/ 29 ноября 2011

Насколько мне известно, вы не можете просто удалить фрагмент текстового файла на месте.Если замещающая строка была одинаковой по размеру, вы могли бы заменить эти точные байты, а если бы она была короче, вы могли бы решить проблему, заполнив пустое пространство пустыми значениями.Если вы не хотите этого делать, вам придется создать новый файл, прочитать каждую строку из старого файла, внести необходимые изменения в эту строку в памяти, а затем записать эту строку в новый файл.Как только это будет завершено, вы можете заменить исходный файл новым файлом.

Если бы можно было добавлять / удалять фрагменты в / из файла, вы, скорее всего, остались бы со значительно фрагментированным файломHDD.Если вам нужно вставить больше символов, необходимо будет создать дополнительные фрагменты, поскольку новые данные просто не могут поместиться в объеме, занимаемом старыми данными, а удаление данных оставит дыры в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...