【问题标题】:QFile not opening/finding file [closed]QFile没有打开/查找文件[关闭]
【发布时间】:2023-03-12 09:39:01
【问题描述】:

我有这个小文件打开功能,使用QFile,但调试后我注意到它跳过了该功能-与找不到文件或编码错误有关?

QString s;
QFile file(QString::fromStdString(fileName));
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
    QTextStream in(&file);
    while (!in.atEnd())
    {
        s = in.readLine();
        shipHandler::lineParse(s);
    }
}

我试图打开的文件是一个文本文件,它与所有其他头文件 + 源文件一起位于主文件夹中。我将"file.txt" 传递给这个函数。

【问题讨论】:

  • QString::fromStdString(fileName) 中存储了什么?
  • @Jepessen 该函数传递了一个字符串,我的例子是“Ships.txt”,我用它来将它转换为 QString。调试时它显示它采用文件名,但似乎没有从中读取
  • 1 - 您确定它包含该名称吗?创建一个 QString 中间变量并检查它。 2 - Ships.txt 没有绝对文件夹。文件存储在哪里,程序的工作文件夹是什么?尝试使用绝对路径名开始。
  • 我不确定当我调试并将鼠标悬停在变量名文件名上时,我得到 -> oi59.tinypic.com/2ymdu1g.jpg - 但是一旦它通过了 QFile 语句,我将鼠标悬停在我得到 - > oi59.tinypic.com/eukgua.jpg - 所以我不确定出了什么问题
  • @horHAY 相对路径。相对路径。相对路径。相对路径。

标签: c++ qt file


【解决方案1】:

我怀疑问题出在QFile 找不到文件。如果未指定完整路径,QFile 将在当前目录中查找。当前目录为:QDir::currentPath()

所以如果你提供完整的路径,首先尝试它是否有效,如果有效,你需要将'ships.txt'放在正确的路径中。

我通常在项目中所做的是将文件放在 EXE 的同一文件夹中(或与 EXE 位于同一目录的文件夹中)。然后检索 EXE 的路径并将其用作文件的新路径。

例如:(未测试!)

QString exePath = QCoreApplication::applicationDirPath()
QString shipsPath = exePath + QDir::separator() + 'ships.txt'

【讨论】:

  • 我刚刚尝试添加完整路径,但同样的问题。项目文件夹在我的桌面上,包括txt文件在内的所有文件都在项目文件夹中。当我单步执行函数时,它会到达 if 语句,然后返回一个,然后到函数的末尾。
  • 是的,刚刚使用了这两行,现在正在读取文件。该路径也使用了我的调试文件夹,为了以防万一,我还放置了该文件!谢谢
猜你喜欢
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
相关资源
最近更新 更多