QFile
QFile lee archivos:
void Widget::QFile_Read()
{
//获取文件路径(文件名)
QString path = QFileDialog::getOpenFileName(this,"打开","../","TXT(*.txt)");
if(path.isEmpty() == false)
{
//创建文件对象
QFile file(path);
//打开文件,只读方式
bool isOK = file.open(QIODevice::ReadOnly);
if(isOK == true)
{
//读取全部
#if 0
//读文件,默认只识别utf8编码
QByteArray array = file.readAll();//字节数组类型
//显示到编辑区,QByteArray自动转换为QString类型
ui->textEdit->setText(array);
#endif
QByteArray array;
while(file.atEnd() == false)
{
//读一行
array += file.readLine();
}
//QString类型转换,这里不转换系统也会自动转换
ui->textEdit->setText(QString(array));
}
//获取文件信息
QFileInfo info(path);
qDebug()<<"文件名字:"<<info.fileName().toUtf8().data();
qDebug()<<"文件后缀:"<<info.suffix();
qDebug()<<"文件大小:"<<info.size();
qDebug()<<"文件创建时间:"<<info.created().toString("yyyy-MM-dd hh:mm:ss"); //2019-7-17 17:03:00
//关闭文件
file.close();
}
}
Archivo de escritura QFile:
void Widget::QFile_Write()
{
QString path = QFileDialog::getSaveFileName(this,"保存","../","TXT(*.txt)");
if(path.isEmpty() == false)
{
//创建文件对象
QFile file;
//关联文件名
file.setFileName(path);
//打开文件,只写方式
bool isOK = file.open(QIODevice::WriteOnly);
if(isOK == true)
{
//获取编辑区内容
QString str = ui->textEdit->toPlainText();
//写文件,QString -> QByteArray
// file.write(str.toUtf8());
//QString -> C++ string -> char*
//file.write(str.toStdString().data());
//转换为本地平台编码
file.write(str.toLocal8Bit());
//QString -> QByteArray
QString buf = "123";
QByteArray a = buf.toUtf8(); //包含中文
a=buf.toLocal8Bit();//本地编码
//QByteArray -> char *
char *b = a.data();
//char * -> QString
//char *p = "abc";
// QString c = QString(p);
}
file.close();
}
}
QDataStream
QDataStream lee archivos:
void Widget::DataStreamWriteData()
{
//创建文件对象
QFile file("../test.txt");
//打开文件,只写方式
bool isOK = file.open(QIODevice::WriteOnly);
if(isOK == true)
{
//创建数据流,和file文件关联
//往数据流中写数据,相当于往文件里写数据
QDataStream stream(&file);
//保存的是二进制数据
stream << QString("今天是7月18日") << 250;
}
}
Archivos de escritura QDataStream:
void Widget::DataStreamReadData()
{
//创建文件对象
QFile file("../test.txt");
//打开文件,只读方式
bool isOK = file.open(QIODevice::ReadOnly);
if(isOK == true)
{
//创建数据流,和file文件关联
//从数据流中读数据,相当于从文件里读数据
QDataStream stream(&file);
//读的时候,按写的顺序取数据
QString str;
int a;
stream >> str >> a ;
//qDebug()<<str.toUtf8().data()<<a;
cout << str.toUtf8().data()<<a;
file.close();
}
}
QTextStream
QTextStream lee archivos:
void Widget::TextStreamWriteData()
{
QFile file;
file.setFileName("../demo.txt");
bool isOK = file.open(QIODevice::WriteOnly);
if(true == isOK)
{
QTextStream stream(&file);
//指定编码
stream.setCodec("UTF-8");
stream << QString("我喜欢喝农夫山泉") << 350;
}
file.close();
}
QTextStream escribe archivos:
void Widget::TextStreamreadData()
{
QFile file;
file.setFileName("../demo.txt");
bool isOK = file.open(QIODevice::ReadOnly);
if(true == isOK)
{
QTextStream stream(&file);
stream.setCodec("UTF-8");
QString str;
int a;
stream >>str>>a;
cout<<str.toUtf8().data()<<a;
}
file.close();
}
QBuffer
QByteArray array;
//创建内存文件
QBuffer memFile(&array);
memFile.open(QIODevice::WriteOnly);
//写入缓冲区
memFile.write("111111111");
memFile.write("22222222222222");
memFile.close();
//写入缓冲区的内容会连在一起输出,/n也会被当成字符输出
qDebug() << memFile.buffer();
//也可以通过字节数组输出
qDebug() <<"array:" << array;
QBuffer memFile1;
memFile1.open(QIODevice::WriteOnly);
QDataStream stream(&memFile1);
stream << QString("测试") << 250;
memFile1.close();
qDebug() << memFile1.buffer();
memFile1.open(QIODevice::ReadOnly);
QDataStream in;
in.setDevice(&memFile1);
QString str;
int a;
in >> str >> a;
memFile1.close();
qDebug() << str.toUtf8().data() << a;