QString path=QFileDialog::getOpenFileName(this,"open","../","txt(*.txt);;all(*.*)"); //获取路径,两个分号
if(!path.isEmpty())
{
QFile file(path); //建立文件对象
QByteArray arraytmp; //字节数组
file.open(QIODevice::ReadOnly); //设置读取方式
if(file.isOpen())
{
arraytmp=file.readAll(); //一次性读取
// 一次读取一行
while(!file.atEnd())
{
arraytmp +=file.readLine();
}
}
ui->textEdit->setText(QString(arraytmp.data())); //显示读取内容 ,字节数组转char* 再转QString
file.close();
}
写操作:
QString path=QFileDialog::getSaveFileName(this,"save","../","txt(*.txt);;all(*.*)");
if(!path.isEmpty())
{
QFile file(path);
//QByteArray arraytmp;
file.open(QIODevice::WriteOnly);
if(file.isOpen())
{
QString str=ui->textEdit->toPlainText(); //获取编辑区内容
file.write(str.toUtf8());
}
file.close();
QString to char *
QString to string to char *
QString str;
str.toStdString().data();
char * 可以直接转QString
QString (str);
byteArray to char *
array.data();
QString to bytearray:
获取文件信息
QFileInfo info(path);
qDebug()<
qDebug()<
str.toUtf8();
使用QDatastream 进行读写
QFile file(path);
QDatastream stream(&file);
关键步骤:
先写:
stream< 再读: QString str; int a; stream>>str>>a; QTextstream 文本流读写和QDataStream 差不多 可以指定写的编码,可查看文件;写的方式是连续无空格,无法分开读取,只能按行或全读还回字符串; 补充 1、打开mainwindow.ui,拖入一个文本框(textEdit)和按钮(pushButton);
2、在按钮上 右键–>转到槽,弹出的对话框中选择“clicked()”事件;
3、点击程序节目左侧“编辑”,打开“mainwindow.cpp”,编辑代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
//打开文件选择对话框,选择文件,获取文件路径
QString fileName = QFileDialog::getOpenFileName(
this, tr("open image file"),
"./", tr("List files(*.txt *.php *.dpl *.m3u *.m3u8 *.xspf );;All files (*.*)"));
if(fileName.isEmpty()){
ui->textEdit->setText("用户取消操作!!");
}
else {
//ui->textEdit->setText(fileName);//显示文件路径
QFile f(fileName);
if(!f.open(QIODevice::ReadOnly | QIODevice::Text))
{
ui->textEdit->setText("Fail!!");
return;
}
QTextStream txtInput(&f);
txtInput.setCodec("utf-8");
QString lineStr;
while(!txtInput.atEnd())
{
lineStr = lineStr + txtInput.readLine() + "\n";
}
ui->textEdit->setText(lineStr);//显示txt文件内容
f.close();
}
}