Как читать больше, чем 600mb файл в qt? Я пытаюсь прочитать файл, используя file.readAll(). Он работает с небольшими файлами. но он дает ошибку bad_alloc в больших файлах? что мне делать?Ошибка bad_allock при попытке прочитать большой файл в qt
ответ
Не делайте этого.
Редко необходимо загружать огромный файл в память за одну операцию.
Вы не можете загружать эту информацию для навигации или манипулирования пользователем, поэтому, если я подозреваю, что вы просто являетесь посредником между файлом на диске и отправкой файла в другое место, используйте механизм, который рассматривает Qfile как QIODevice, а не полностью загружает его как QString или QByteArray.
Если вы (или ваши клиенты) находитесь в Windows с использованием 32-разрядной системы, но у вас может быть более 2 ГБ ОЗУ, вы можете быть в курсе опции компоновщика /LARGEADDRESSAWARE, которая позволит вам поддерживать адреса размером более 2 ГБ и которые могут также улучшить вашу ситуацию, если вы действительно не можете обойтись без загрузки файла в память.
Hi Roger Attrill. На самом деле я хочу прочитать весь файл и загрузить его на сервер. Я пытаюсь разработать загрузчик (клиент к серверу). Я решил прочитать файл в кусках. Но QNetworkAccessManager не обеспечивает передачу пакетов. – zi0408
[QNetworkAccessManager :: post] (http://developer.qt.nokia.com/doc/qt-4.8/qnetworkaccessmanager.html#post) имеет опцию QIODevice в дополнение к версии QByteArray - не следует избегать загрузки файл сначала? –
Рассмотрите возможность чтения файла в кусках, а не не сразу. Конечно, ваша цель состоит в том, чтобы отобразить весь файл в текстовом редакторе, и в этом случае его загрузка частично сложнее. Вы очень расплывчаты, поэтому трудно быть более конкретным.
Попробуйте добавить
QMAKE_LFLAGS += -Wl,--large-address-aware
к вашим квартам про файл, от того, что я понимаю, что это позволит процессу накапливать больше памяти, чем 2 Гб.
Да, но только на x64 Windows. И предполагается использование MinGW. – vsizikov
- 1. Ошибка при попытке прочитать файл
- 2. Ошибка при попытке прочитать файл в scrapy
- 3. Ошибка при попытке прочитать файл в jar
- 4. Ошибка при попытке загрузить большой файл
- 5. Ошибка при попытке прочитать файл jar taglib
- 6. Ошибка компилятора при попытке прочитать файл evtx?
- 7. OutOfMemoryError: Java куча пространства при попытке прочитать большой файл
- 8. Ошибка при NIO при попытке скопировать большой файл
- 9. Ошибка 500 при попытке импортировать большой файл .txt в MysQL
- 10. Ошибка кодирования (?) При попытке прочитать файл CSV в R
- 11. Ошибка при попытке прочитать .data файл в R
- 12. Страница не загружается при попытке прочитать файл
- 13. Прочитать большой файл параллельно?
- 14. Файл не найден при попытке прочитать
- 15. Ошибка при попытке скопировать/вставить большой файл через удаленное соединение
- 16. Неустранимая ошибка, возникающая при попытке прочитать результат
- 17. ошибка при попытке создать меню в Qt
- 18. ошибка синтаксиса python при попытке прочитать текстовый файл
- 19. Ошибка при попытке прочитать файл .xls с использованием EPPlus
- 20. Ошибка при попытке загрузить файл через FTP с помощью Qt
- 21. Ошибка при попытке получить файл на FTP с помощью Qt
- 22. ENOENT при попытке прочитать заархивированный файл
- 23. Получение NameError при попытке прочитать файл
- 24. Errno13, Permission denied при попытке прочитать файл
- 25. Ошибка входа при попытке прочитать localStorage
- 26. Ошибка при попытке прочитать раздел конфигурации Web.config
- 27. Ошибка 299 при попытке прочитать память процесса
- 28. Ошибка при попытке прочитать XML-документ (C#)?
- 29. Xamarin - Ошибка при попытке прочитать JSon
- 30. SQLite Ошибка записи при попытке прочитать
Укажите, на какой платформе вы делаете это. – unwind
Могу ли я спросить, что произойдет, когда вы загрузите 600 МБ данных - я надеюсь, что это не для того, чтобы пользователь мог манипулировать или перемещаться, поскольку он, безусловно, будет безнадежно неэффективным для любого взаимодействия с пользователем. Проблемы, связанные с загрузкой больших файлов, почти всегда указывают на необходимость решения другой проблемы, чтобы предотвратить проникновение в более глубокое и глубокое отверстие с течением времени. Разделить и завоевать ... –
Я использую Qt creator (C++). – zi0408