qt-08-文件读写

1. 检测一个路径是否存在:

QDir dir("D:\\vc6");
if(!dir.exists())
 {
      QMessageBox::information(this,"提示","路径不存在");
  }
else
{
QMessageBox::information(this,"提示","路径存在");
}

2. 创建一个目录:

 QDir dir;
  QString strpath = "D:\\vc66666666";
 if(!dir.exists(strpath))
 {
      QMessageBox::information(this,"提示","路径不存在");
      dir.mkdir(strpath);
  }
  else
 {

   QMessageBox::information(this,"提示","路径存在");
}

3. C++标准写文件:

ios::app    = 0x08, //供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后

打开文件的方式在IOS类(流式I/O的基类)中定义,有如下几种方式:
ios::in
为输入(读)而打开文件,文件不存在则创建(ifstream)默认的打开方式
ios::out
为输出(写)而打开文件,文件不存在则创建,若文件已存在则清空原内容
(ofstream默认的打开方式)
ios::ate 
文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用
ios::app
供写使用,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,
指针位置总在最后
ios::trunc
在读写前,先将文件长度截断为0(默认)
ios::nocreate
文件不存在时产生错误,常和in或app联合使用
ios::noreplace
文件存在时产生错误,常和out联合使用
ios::binary
二进制格式文件
这些方式是能够以“或”运算(“|”)的方式进行组合使用。
文件保护方式选择项
filebuf::openprot
默认的兼容共享方式
filebuf::sh_none
独占,不共享
filebuf::sh_read
读共享
filebuf::sh_write
写共享
写:

#include <fstream> 

std::mutex m_utex;

void addlog(char *ptrcontext)
{

    std::unique_lock<std::mutex> m_lock(m_utex);

    //追加写文件,如果没有文件就自动创建
    std::ofstream logfile("D:\\vc66666666\\1.txt", std::ios::app);

    if (logfile.is_open())
    {
        logfile << ptrcontext;
        logfile << "\n";
    }
    logfile.close();
m_lock.unlock();

}

读:

 std::fstream readfile("D:\\vc66666666\\1.txt",std::ios::in);
    char buf[256] = {0};
    while(readfile.getline(buf,256))
    {
        qDebug()<<buf;

    }
    readfile.close();

4. QFile
写文件

  QFile file("D:\\vc66666666\\2.txt",this);
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
        return;

    static int anum =100;
    QTextStream out(&file);
    out << "The magic number is: " << anum++ << "\n";

    file.close();

读文件:

  QFile file("D:\\vc66666666\\2.txt");
         if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
             return;

         QTextStream in(&file);
         while (!in.atEnd()) {
             QString line = in.readLine();
             m_label->setText(line);
         }

另一种方式:

QFile file("D://2222222222222.txt");

   if(file.open(QFile::WriteOnly))
   {
       QString strTmp = "我是你爸爸\r\n";

       file.write( strTmp.toUtf8());
       strTmp = "我是你爷爷\r\n";
       file.write( strTmp.toUtf8());

   }
   file.close();

读:

  QFile readfile1("D://2222222222222.txt");
   if(readfile1.open(QFile::ReadOnly))
   {
       int i = 0;
       while(!readfile1.atEnd())
       {
           QByteArray str =  readfile1.readLine();
           qDebug()<<str.data();
           i++;

       }

       qDebug()<<"读取行数:"<<i;

   }

readfile1.close();

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发如雪-ty

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值