• 12137阅读
  • 6回复

[提问]QFile::open() ReadOnly模式打开文件失败 [复制链接]

上一主题 下一主题
离线yzpdsg
 

只看楼主 倒序阅读 楼主  发表于: 2011-08-28
我仅仅想用open打开个文件,然后读取其中的全部内容。代码如下:
        fileName = "\"" + fileName + "\"";//防止路径中有空格
        qDebug()<<"fileName="<<fileName;//eg:fileName= ""D:\money.txt""
        QFile file(fileName);
        if(file.open(QIODevice::ReadOnly))
        {
            QTextStream in(&file);
            ui->textEdit->setPlainText(in.readAll());
        }
        else
        {
            QMessageBox::critical(this,tr(""),tr("打开文件失败!"),QMessageBox::Ok);
            qDebug()<<"error="<<file.errorString();
        }
输出的错误信息是:文件名、目录名或卷标语法不正确。可是我在cmd下输入上面的路径("D:\money.txt")就可以打开,没问题啊?这是为什么呢?

离线dbzhang800

只看该作者 1楼 发表于: 2011-08-28
不清楚你的文件名是哪儿来的,但

1. 有没有空格应该不用你操心加引号吧?
2. "D:\money.txt" 应该是 "D:\\money.txt" 吧
离线yzpdsg

只看该作者 2楼 发表于: 2011-08-29
回 1楼(dbzhang800) 的帖子
1、用操心,否则对于有空格的路径肯定不对。
2、我觉得不应该是"D:\\money.txt"。因为CMD下是没问题的。
离线roywillow

只看该作者 3楼 发表于: 2011-08-29
如果你真的给字符串赋值"D:\money.txt"的话应该是不正确的,因为\m应该首先会尝试转义吧
另外好像qt中所有文件路径都是用的“/”,至少我用qDebug输出了很多都是这样的
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线yzpdsg

只看该作者 4楼 发表于: 2011-08-29
回 3楼(roywillow) 的帖子
我的fileName是通过参数传递进来的。用qDebug输出就是D:\money.txt。等下改成D:/money.txt试试。
离线fightiger

只看该作者 5楼 发表于: 2011-08-29
离线jdwx

只看该作者 6楼 发表于: 2011-08-29
回 4楼(yzpdsg) 的帖子
用文件对话框获得的文件名,直接打开没问题,中文也没问题,空格也没问题。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个