Я столкнулся с другой проблемой в Qt, я не могу понять, как писать в определенной строке текстового файла с помощью QFile
. Вместо этого стирается все написанное в начале. Итак, с данной информацией, как мне записать определенную строку в QFile
?
Вот две функции.
- Первая функция ищет файл, а затем получает две переменные. Тот, который находит следующую пустую строку, тот, который получает текущий идентификационный номер.
- Вторая функция должна писать. Но я искал документацию о том, что мне нужно, я гуглил ее и пробовал много поисков, но безрезультатно.
Функция 1
QString fileName = "C:\\Users\\Gabe\\SeniorProj\\Students.txt";
QFile mFile(fileName);
QTextStream stream(&mFile);
QString line;
int x = 1; //this counts how many lines there are inside the text file
QString currentID;
if(!mFile.open(QFile::ReadOnly | QFile::Text)){
qDebug() << "Could not open file for reading";
return;
}
do {
line = stream.readLine();
QStringList parts = line.split(";", QString::KeepEmptyParts);
if (parts.length() == 3) {
QString id = parts[0];
QString firstName = parts[1];
QString lastName = parts[2];
x++; //this counts how many lines there are inside the text file
currentID = parts[0];//current ID number
}
}while (!line.isNull());
mFile.flush();
mFile.close();
Write(x, currentID); //calls function to operate on file
}
Функция выше читает файл, который выглядит так.
1001;James;Bark
1002;Jeremy;Parker
1003;Seinfeld;Parker
1004;Sigfried;FonStein
1005;Rabbun;Hassan
1006;Jenniffer;Jones
1007;Agent;Smith
1008;Mister;Anderson
И функция получает два бита информации, которые, как я полагал, могут мне понадобиться. Я не слишком хорошо знаком с QFile
и поиском, но я подумал, что мне понадобятся эти переменные:
int x; //This becomes 9 at the end of the search.
QString currentID; //This becomes 1008 at the end of the search.
Поэтому я передал эти переменные следующей функции в конце функции 1. Write(x, currentID);
Функция 2
void StudentAddClass::Write(int currentLine, QString idNum){
QString fileName = "C:\\Users\\Gabe\\SeniorProj\\Students.txt";
QFile mFile(fileName);
QTextStream stream(&mFile);
QString line;
if(!mFile.open(QFile::WriteOnly | QFile::Text)){
qDebug() << "Could not open file for writing";
return;
}
QTextStream out(&mFile);
out << "HelloWorld";
}
Я отказался от любых попыток решить проблему самостоятельно, все, что делает эта функция, — это заменяет все содержимое текстового файла на «HelloWorld».
Кто-нибудь знает, как писать на определенной строке или хотя бы перейти в конец файла, а затем написать?