QT 文件读写

 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()<<info.created().toString("yyyy-MM-dd HH-mm-ss"); //datetime 转为string
   qDebug()<<info.fileName().toUtf8().data();

str.toUtf8();

 

 

使用QDatastream 进行读写

QFile file(path);

QDatastream stream(&file);

关键步骤:

先写:

stream<<QString("你好")<<1235;

再读:

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();
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值