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");
    //文件以只读方式打开 || 在读取时,将行结束符转换成 \n
    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();
}

  

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ystraw_ah

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

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

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

打赏作者

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

抵扣说明:

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

余额充值