Qt中文件操作遇到的。。。

来源:互联网 发布:淘宝店开了怎么上货 编辑:程序博客网 时间:2024/05/16 18:11

咳咳!总结了一下我在使用QT文件操作时所用到的,再接再厉!再接再厉!!

1.保存到文件:

  QFile file("test.txt");

  if (!file.open(QIODevice::WriteOnly);)

   {

       QMessageBox::warning(NULL, tr("保存文件"),

                            tr("无法读取文件 %1")

                            .arg(file.errorString()));

   }

  QDataStream out(&file);

  out.setVersion(QDataStream::Qt_4_3);

  /***************************如果保存变量***************************/

  QString sName;

  Int iAge;

  out << sName << iAge;

  /************************如果保存容器(如QMap)*******************/

  QMap<int, QString> map;

  map.insert(0, "name1");

  map.insert(1, "name2");

  map.insert(2, "name3");

  out << map;

  /***************************如果保存结构体**************************/

  typedef struct student

  {

     QString name;

     Int age;

     Int no;

  }STUDENT_MESSAGE;

  STUDENT_MESSAGE stuMsg;

  Out << stuMsg.name << stuMsg.age << stuMsg.no;

  /*******************************************************************/

  file.close();

2.从文件读取:

  QFile file("test.txt");

   if (!file.open(QIODevice::ReadWrite))

   {

       QMessageBox::warning(NULL, tr("读取文件"),

                            tr("无法读取文件 %1")

                            .arg(filePro.errorString()));

   }

   QDataStream in(&file);

   in.setVersion(QDataStream::Qt_4_3);

   /************************************* 读取变量 *************************************/

   QString sName;

   Int iAge;

   in >> sName >> iAge;

   /******************************* 读取容器(如QMap) *******************************/

   QMap<int, QString>::const_iterator i = map->constBegin();

   QString name1,name2,name3;

   while (!= map->constEnd())

   {

Switch(i.key())

{

        Case 0:name1= i.value();

        Case 1:name2= i.value();

        Case 2:name3= i.value();

}        

++i;

    }

   /************************************************************************************/

   file.close();

3.判断所选路径下文件是否存在  

 int MainWindow::treefile( QString filePath)

 {

    QDir dir(filePath);

    if (!dir.exists())

    {

        return -1;

    }

    //取到所有的文件和文件名,但是去掉.和..的文件夹(这是QT默认有的)

    dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);

    //文件夹优先

    dir.setSorting(QDir::DirsFirst);

    //转化成一个list

    QFileInfoList list = dir.entryInfoList();

    if(list.size()< 1 )

    {

        return -1;

    }

    int i=0;

    //递归算法的核心部分

do

{

        QFileInfo fileInfo = list.at(i);

        QString path = fileInfo.absolutePath();//获取一个绝对路径(不包括文件名)

        //如果是文件夹,递归

        bool bisDir = fileInfo.isDir();

        if(bisDir)

        {

           treefile(fileInfo.filePath());

        }

      else

      {

          if(fileInfo.fileName() == "test.txt") //找到搜索文件(比如你要找一个test.txt文件)

          {

              //这里做你想做的

          }

      }

      i++;

   } while(< list.size());

}

4.删除指定路径下的文件夹

  bool MainWindow::deleteDir(const QString dirName)

  {

       QDir directory(dirName);

       if (!directory.exists())

       {

             return true;

       }

       QStringList files = directory.entryList(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::Hidden);

       QList<QString>::iterator f = files.begin();

       bool error = false;

       for (; f != files.end(); ++f)

       {

               QString filePath = QDir::convertSeparators(directory.path() + '/' + (*f));

               QFileInfo fi(filePath);

               if (fi.isFile() || fi.isSymLink())

               {

                       QFile::setPermissions(filePath, QFile::WriteOwner);

                       if (!QFile::remove(filePath))

                       {

                               error = true;

                       }

               }

               else if (fi.isDir())

               {

                       if (!deleteDir(filePath));

                       {

                               error = true;

                       }

               }

       }

       if(!directory.rmdir(QDir::convertSeparators(directory.path())))

       {

               error = true;

       }

       return !error;

}

原创粉丝点击