Member 14594285 Ответов: 1

Выровнять текст в txt файл


У меня есть пять столбцов в моем файле txt, и я хочу выровнять свой текст в 5 столбцах..Я использовал getPosition и seek, но я получаю позицию в файле, а не в моих строках

Что я уже пробовал:

Раньше я искал, но не получал того, что хотел.

KarstenK

другой возможный способ-включить вкладку (HT) для экспорта в виде некоторых csv-данных. Остальное смотрите в решении 1.

1 Ответов

Рейтинг:
0

OriginalGriff

Текстовые файлы не имеют "строк", они просто имеют "позиции символов", и даже они могут варьироваться в зависимости от типа "символов", которые вы храните / кодируете в них. Символы ASCII в текстовом файле ASCII будут иметь восемь битов - один байт в ширину, но символы Unicode могут иметь восемь или шестнадцать (или даже 32!) бит в ширину - и восьмибитная версия может "расширить" символ, чтобы занять два байта.

Предполагая, что вы используете ASCII для удобства кодирования и обсуждения, если вы не применяете какой - то "формат" к своему файлу для установления строк, вы не можете работать с такими различиями, особенно если ваши "столбцы" в каждой строке не имеют фиксированной длины-добавление маркера "конец строки", такого как новая строка, само по себе не помогает, поскольку изменения в строке могут потребовать перемещения местоположения этой новой строки, и это влияет на все строки позже в файле, которые автоматически не перемещаются, чтобы "совпасть" с новой позицией новой строки.
Поэтому, если вы устанавливаете фиксированную ширину столбцов, давая вам фиксированную длину строк, вы можете использовать seek чтобы расположиться в начале ряда n стремясь n * rowLength, и к началу столбца m в строке n, стремясь к n * rowLength + column0Length + column1Length + ... + columnMMinusOneLength

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


Member 14594285

Я решил по-другому, всегда используя getPosition и seek, в любом случае спасибо