我使用QFile
和QTextStream
先讀取文件,然後將未修改的讀取內容重新寫入同一個文件。下面是代碼:QTextStream readAll()刪除換行符
QFile inFile("file.txt");
if(!inFile.open(QFile::ReadOnly | QFile::Text))
{
qCritical() << "ERROR: Unable to open input file: " << "file.txt";
exit(1);
}
QTextStream inStream(&inFile);
QString fileContents = inStream.readAll();
inFile.close();
QFile outFile("file.txt");
if(!outFile.open(QFile::WriteOnly | QFile::Text))
{
qCritical() << "ERROR: Unable to open output file: " << "file.txt";
exit(1);
}
QTextStream outSream(&outFile);
outSream << fileContents;
outFile.close();
然而,這種變換file.txt的如下:
1
2
3
4
5
成
12345
即在該過程中得到除去換行符。這是爲什麼發生?我怎樣才能防止它?
它在Debian 8上按預期運行(不發生轉換,輸出看起來與輸入完全相同)。你用Windows嗎?也許不同的編解碼器用於閱讀和寫作!?在沒有'QFile :: Text'標誌的情況下試着避免解釋任何控制字符(「\ n」等)。 – Aaron
如果可能,發佈兩個文件的十六進制轉儲。我們需要仔細瞭解線路終結器是什麼以及它們變成了什麼(假設它們不會完全消失)。 –
適合我。有兩件事可以嘗試:首先,'qDebug()<< fileContents;'讀後(將幫助識別讀寫是否正在轉換字符);其次,寫入一個新文件,並轉儲 - 例如'od -c 33997523.txt'給我輸入和輸出文件的'1 \ n 2 \ n 3 \ n 4 \ n 5 \ n'。 –