I have following code in QT in
// myEditor.h
class myEditor : QScintilla {
public:
readFile();
};
#include "myEditor.h"
// myEditor.cc
myEditor::readFile() {
FILE* fp = fopen("mynew.v","r"):
QTextStream ts(fp, QIODevice::ReadOnly);
/* reading the text stream buffer by buffer
bufferSize is calculated using following formula
2 to power(k) * n = 2 to power 31*
where n is size of each block in linux filesystem*/
int bufferSize =(1024* 1024)/2;
do {
QString s = ts.read(bufferSize);
append(s);
} while(!ts.atEnd());
}
I calculated the bufferSize as per comments .It will be helpful if someone can review the code and let me know if there are issues.
1 Answer 1
As you're storing the whole result into memory anyway for display in a text editor (so you're not expecting to load hundreds of MB of text), why not just use what Qt provides to read the entire file into a string in one call?
It's probably more than enough optimized for general purpose usage. Displaying the entire result in the editor might also be faster than constantly appending parts.
I also see that you're using the C API for opening the file (which is never closed) and then passing it to Qt. Qt has QFile
for this, as shown in the link mentioned above.
QScintilla
? I'm sure it wasn't designed for this. As for gzip files,QFile
, by itself, doesn't handle (de)compression, but neither doesfopen()
\$\endgroup\$