QT文件操作举例:一个控制台程序
//#include <QtCore/QCoreApplication>
#include <QMap>
#include <QColor>
#include <QFile>
#include <QImage>
#include <QtDebug>
#include <iostream>
using namespace std;
/* 操作二进制文件 */
bool writeFile1(const char * filename)
{
/* QImage image("1.bmp");
QMap<QString, QColor> map;
map.insert("red", Qt::red);
map.insert("green", Qt::green);
map.insert("blue", Qt::blue);*/
QFile file(filename);
if(!file.open(QIODevice::WriteOnly))
{
cerr<<"Cannot open file for writing: " << qPrintable(file.errorString()) << endl;
return false;
}
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_3);
//out << quint32(0x12345678) << image << map;
out << "What can I do for you?\n";
out << " Hello my baby\n";
file.close();
return true;
}
bool readFile1(const char *filename)
{
QImage image;
QMap<QString, QColor> map;
QFile file(filename);
if(!file.open(QIODevice::ReadOnly))
{
cerr<<"Cannot open file for reading: " << qPrintable(file.errorString()) << endl;
return false;
}
QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_3);
//in >> n >> image >> map;
char *line = new char[1024];
while(!in.atEnd())
{
in >> line; // 会将换行符读取到line中
cout << line;
}
file.close();
delete [] line;
//image.save("a.bmp");
return true;
}
/* 操作文本文件 */
bool writeFile2(const char * filename)
{
/* QImage image("1.bmp");
QMap<QString, QColor> map;
map.insert("red", Qt::red);
map.insert("green", Qt::green);
map.insert("blue", Qt::blue);*/
QFile file(filename);
if(!file.open(QIODevice::WriteOnly))
{
cerr<<"Cannot open file for writing: " << qPrintable(file.errorString()) << endl;
return false;
}
QTextStream out(&file);
//out << quint32(0x12345678) << image << map;
out << "What can I do for you?\n";
out << " Hello my baby\n";
file.close();
return true;
}
bool readFile2(const char *filename)
{
QFile file(filename);
if(!file.open(QIODevice::ReadOnly))
{
cerr<<"Cannot open file for reading: " << qPrintable(file.errorString()) << endl;
return false;
}
QTextStream in(&file);
char line[1024] = {0};
while(!in.atEnd())
{
strcpy(line, in.readLine().toStdString().c_str()); // 不会将换行符读取过来
cout << line << endl;
}
file.close();
return true;
}
int main()
{
//QCoreApplication a(argc, argv);
char infile[] = "facts.dat";
/* if(writeFile1(infile))
{
readFile1(infile);
}*/
if(writeFile2(infile))
{
readFile2(infile);
}
return 0;//a.exec();
}