Можно ли добавить строку в определенную строку файла? - PullRequest
0 голосов
/ 15 апреля 2019

Я все еще довольно новичок в stackoverflow, поэтому я прошу прощения, если есть что-то, что я сделал неправильно.У меня есть CSV-файл, который постоянно обновляется, но я хочу иметь возможность добавить строку в конец определенной строки.У меня есть метод, который может найти строку, к которой я хочу добавить строку, но я не уверен, как добавить эту строку в конец этой строки, не создавая новую строку в нижней части файла CSV.

'' '

QFile listOfStudents("listOfStudents.csv");

QTextStream read(&listOfStudents), write(&listOfStudents;

QStringList studentInformation;

QString junkLine = read.readLine(), line, studentLine,
        appendingString = "Ralph Emerson";

if(!listOfStudents.open(QFile::ReadWrite | QFile::Text))
{
    QMessageBox::warning(this, "title", "not open!");
}

while(!read.atEnd())
{
    line = read.readLine();
    if(line.contains(IDNumber, Qt::CaseSensitive))
    {
        studentLine = line;
        studentLine += ", ";
        studentLine += appendingString;
        line.clear();
        write << studentLine;

        break;
    }
}

' ''

Если studentLine должен был быть

12345678, Гари Боб, Кеннеди Джонсон

, и я хотел добавитьстрока «Ральф Эмерсон», ожидаемый результат будет

12345678, Гари Боб, Кеннеди Джонсон, Ральф Эмерсон "

Однако приведенный выше код просто добавит обновленную студенческую линию в конец файла, а не изменится.строка, в которой он изначально находился в файле.

1 Ответ

2 голосов
/ 15 апреля 2019

Файлы обычно представляют собой последовательные, ограниченные потоки байтов.Поэтому, если вы хотите писать в середине, вам нужно будет переместить все остальное вперед, чтобы освободить место для нового.

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

Однако наиболее эффективным решением является запись во время чтения файла в новый, а затем добавление новогоодин, когда вы достигнете точки вставки, а затем продолжите копирование остальной части файла в вывод.

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