我正在用 Qt C++ 制作文件编辑器。我注意到,当我在 Windows 上使用记事本保存源文件时,它会用 0x0D + 0x0A 替换每一行(ANSI 编码默认值)。
如果我从 QTextEdit 获取数据并将其转换为 QByteArray,它将用 0x0A 替换行尾。
现在我的主要问题是我不知道如何过滤掉这些行尾或使其使 QFile 读取不同的文件。
我只是想要一种比较是否需要保存更改的方法。代码如下:
bool QFileTab::needSave()
{
QFile file1 ( this->filePath );
file1.open(QIODevice::ReadOnly);
QByteArray data1 ( file1.readAll() );
QByteArray data2 ( this->body.toPlainText().toLocal8Bit() );
file1.close();
return !IOHandler::compare(data1, data2);
}
void IOHandler::read(QFileTab *tab)
{
QFile temp (tab->filePath);
if(temp.open(QIODevice::ReadOnly | QIODevice::Text))
{
QString data(temp.readAll());
tab->data = data;
temp.close();
} else tab->data = QString("The file could not be read.");
tab->doUpdate();
}
bool IOHandler::compare(QByteArray data1, QByteArray data2)
{
return data1 == data2;
}
我希望能够在 Windows 和 Linux 上读取、比较和写入文件。