zoukankan      html  css  js  c++  java
  • 5-Qt读取文件失败原因

    刚开始准备读取当前目录下的txt文件:

    QFile file(":/xuhao.txt");
    或者:
    QFile file("./xuhao.txt");

    但是一直出错,一般就是文件放错位置了,可以用绝对路径测试下,看可以不,一般绝对路径可以,就是你放错地方了;

    可以打印当前程序运行的目录对比下你的绝对路径:

    QString runPath = QCoreApplication::applicationDirPath() + "/xuhao.txt";
    runPath.replace(QString("/"),QString("\"));
    qDebug() << runPath;

      

    可以读取到你的当前运行路径,对比下可以发现你的问题。

    对于replace的作用是因为路径中 / 要换成 \ 才能跑

    利用获取的路径实际上可以将相对论路径转为绝对路径去访问文件,但是一般这是多余的操作,

    一般直接用相对路径就比较好了。

    附上一段读入每一行,读入到数组里面的代码:

    void MainWindow::readFile()
    {
        //构造一个以data1.txt为文件名的QFile对象
        QString runPath = QCoreApplication::applicationDirPath() + "/xuhao.txt";
        runPath.replace(QString("/"),QString("\"));
    
        qDebug() << runPath;
    //    QFile file(":/xuhao.txt");
        //少了   E:\a-qt\build-ball3-Desktop_Qt_5_9_1_MinGW_32bit-Debug\debug\xuhao.txt
        QFile file("./xuhao.txt");
        //文件以只读方式打开 || 在读取时,将行结束符转换成 
    
        if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
        {
            qDebug()<< "open file failure";
            return;
        }
        else
        {
            QString array;
            //创建QTextStream流操作对象,与QFile对象file连接
            QTextStream in(&file);
            //读取所有文本
            array = in.readAll();
            //trimmed():移除字符串两端空白符,simplified():移除字符串两端的空白字符,
            //使用单个空格字符“ ”代替字符串中出现的空白字符。
            array = array.trimmed();
            //qDebug()<<array;
            array = array.simplified();
            //qDebug()<<array;
    
            int i=0,k=0;
            while(i<array.size())
            {
                //.at(int position):返回当前字符的位置index
                name_data[k] += array.at(i);
    //            printf("%d: ", i);
                name_data[k]=name_data[k].trimmed();
                if(array.at(i) == " ")
                {
                    k++;
                }
                i++;
            }
        }
        file.close();
    }
    

      

  • 相关阅读:
    如何修改配置文件:CentOS下SSH端口修改
    linux ssh_config和sshd_config配置文件学习
    linux文件权限命令chmod学习
    硬盘接口类型介绍
    Linux中权限(r、w、x)对于目录与文件的意义
    谈谈对虚拟DOM的理解
    对于深入响应式原理的深刻理解
    环套树 or 基环树 找环
    POI 2014 little bird
    洛谷P2876 [USACO07JAN]解决问题Problem Solving
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/10126391.html
Copyright © 2011-2022 走看看