尝试读取qt中的大文件时出错

尝试读取qt中的大文件时出错,qt,qt4,Qt,Qt4,如何在qt中读取大于600mb的文件? 我正在尝试使用file.readAll()读取文件。它可以处理小文件。但是它在大文件中会出现错误吗?我该怎么办?考虑分块读取文件,而不是一次读取所有文件。当然,您的目标可能是在文本编辑器中显示整个文件,在这种情况下,部分加载文件更为复杂。你说得很含糊,所以很难说得更具体。考虑分块读取文件,而不是一次读取所有文件。当然,您的目标可能是在文本编辑器中显示整个文件,在这种情况下,部分加载文件更为复杂。你说得很含糊,所以很难说得更具体。不要这样做。 很少需要在一次

如何在qt中读取大于600mb的文件?
我正在尝试使用file.readAll()读取文件。它可以处理小文件。但是它在大文件中会出现错误吗?我该怎么办?

考虑分块读取文件,而不是一次读取所有文件。当然,您的目标可能是在文本编辑器中显示整个文件,在这种情况下,部分加载文件更为复杂。你说得很含糊,所以很难说得更具体。

考虑分块读取文件,而不是一次读取所有文件。当然,您的目标可能是在文本编辑器中显示整个文件,在这种情况下,部分加载文件更为复杂。你说得很含糊,所以很难说得更具体。

不要这样做。

很少需要在一次操作中将一个巨大的文件加载到内存中

你不能为用户导航或操作加载这么多信息,所以如果,正如我所怀疑的,您只是在将文件放在光盘上和将文件发送到其他地方之间充当一个中介,然后使用一种机制,将Qfile视为一个QIODevice,而不是将其完全作为QString或QByteArray加载


如果您(或您的客户)在Windows上使用32位系统,但可能有超过2Gb的RAM供您使用,您可能希望了解链接器选项,它允许您支持大于2Gb的地址,如果您确实无法将文件加载到内存中,它也可能会改善您的情况。

不要这样做。

很少需要在一次操作中将一个巨大的文件加载到内存中

你不能为用户导航或操作加载这么多信息,所以如果,正如我所怀疑的,您只是在将文件放在光盘上和将文件发送到其他地方之间充当一个中介,然后使用一种机制,将Qfile视为一个QIODevice,而不是将其完全作为QString或QByteArray加载

如果您(或您的客户)在Windows上使用32位系统,但可能有超过2Gb的RAM供您使用,您可能希望了解链接器选项,它允许您支持大于2Gb的地址,如果您确实无法将文件加载到内存中,它也可能会改善您的情况。

尝试添加

QMAKE_LFLAGS += -Wl,--large-address-aware
到您的qt pro文件,据我所知,它将允许进程累积超过2GB的内存。

尝试添加

QMAKE_LFLAGS += -Wl,--large-address-aware

到您的qt-pro文件,据我所知,这将允许进程积累超过2GB的内存。

请指定您在哪个平台上执行此操作。我可以问一下,当您加载了600Mb的数据时会发生什么情况吗?我希望这不是由用户操作或导航,因为对于任何与用户相关的交互来说,这肯定是毫无希望的效率低下。与加载大文件相关的问题几乎总是需要解决不同的问题,以防止随着时间的推移进入越来越深的洞。分而治之…请指定您在哪个平台上执行此操作。我可以问一下,当您加载了600Mb的数据时会发生什么情况吗?我希望这不是由用户操作或导航,因为对于任何与用户相关的交互来说,这肯定是无望的低效。与加载大文件相关的问题几乎总是需要解决不同的问题,以防止随着时间的推移进入越来越深的洞。分而治之……嗨,罗杰·阿特里尔。实际上我想读取整个文件并上传到服务器。我正在尝试开发上传程序(客户端到服务器)。我考虑过把文件分块读。但是QNetworkAccessManager不提供分块传输。除了QByteArray版本之外,还有一个QIODevice选项-这是否避免了先加载文件?嗨,罗杰·阿特里尔。实际上我想读取整个文件并上传到服务器。我正在尝试开发上传程序(客户端到服务器)。我考虑过把文件分块读。但是QNetworkAccessManager不提供分块传输。除了QByteArray版本之外,还有一个QIODevice选项-这是否避免了先加载文件?是的,但仅在x64 Windows上。假设使用了MinGW。是的,但仅在x64窗口上使用。假设使用了MinGW。