如何修复QFile打开错误(未知错误),即使文件存在
How to fix QFile open error (unknown error) even though the file exists?
我正试图使用QFile
接口打开并读取map.dat
文件,但它不会打开该文件,即使该文件确实存在于目录中。
- 我在C++中尝试过
fopen
、ifstream
,但他们一直告诉我该文件不存在,即使我已将其添加到资源文件夹(.qrc
)中。然后我转到QFile
接口,问题仍然存在。这是一个目录问题,我现在妥协并使用绝对(不是最佳实践)路径,现在文件存在问题已经解决 - 现在它仍然无法打开文件,我使用接口的成员函数来查看错误代码和错误消息,我得到了
0
和Unkown Error
,这不是一个有用的信息
我正在使用:
- MacOS Mojave 10.14.2
- 问题5.11.3
- 编译器:clang_64bit
QFile mapDat("/Users/myname/projectname/file.dat");
if (!mapDat.exists()){
qDebug() << "not exist";
}
QString errMsg;
QFileDevice::FileError err = QFileDevice::NoError;
if (!mapDat.open(QIODevice::ReadOnly) | QFile::Text){
errMsg = mapDat.errorString();
err = mapDat.error();
qDebug() << "could not open it" << err << errMsg;
return;
}
QTextStream in(&mapDat);
QString mText = in.readAll();
qDebug() << mText;
mapDat.close();
我希望qDebug() << mText
能在控制台中给我一些东西,但它没有。
输出为:
无法打开它"0";未知错误";
它来自if语句中的qDebug()
行。
您的条件是错误的:
if (!mapDat.open(QIODevice::ReadOnly) | QFile::Text)
这将尝试以只读模式打开文件。其结果取反(!
),然后与QFile::Text
进行"或"运算(即!=0)。所以这个条件永远都是真的。
你有一个简单的打字错误(括号错位):
if (!mapDat.open(QIODevice::ReadOnly | QFile::Text))
// ^ Bitwise OR of flags for mapDat.open call
相关文章:
- 为什么此代码存在运行时错误?
- 错误:令牌 { '{' 之前应存在非限定 ID
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- Visual Studio 2019在内置库中存在错误
- C++为什么我的指针选择排序中存在分段错误?
- MSVC 中可能存在的编译器错误
- Microsoft Visual Studio 2019交叉编译CMake库 - 有效,但存在SEG错误
- 在 Windows 10 下使用 GTest 的 CMake - 致命错误 LNK1104:无法打开文件"gtest.lib",但存在调试"gtestd.lib"
- 为什么此代码中存在分段错误?
- 无法在这个基本的Qt代码片段中找到错误,但我被告知它肯定存在?
- 由于相同的文件名/类名存在于不同的SO中而导致的SEG错误
- 以下 OpenCV 源代码中是否存在错误?(#ifdef 没有 #else)
- 带有unique_ptr的通用单链表,MS visual studio C++中存在未知错误
- 指向类成员函数的指针中存在类型转换错误
- 使用c++的gSOAP中的stdsoap2.cpp中存在编译错误
- C++错误:'else'之前应存在非限定 ID
- 这是 GCC 中可能存在的错误吗?
- 我正在调试这个C++程序.编译器不再显示语法错误,但存在隐藏的逻辑错误
- 当错误存在时,为什么我的程序不执行第二个catch块