Реклама
  • 22 ноября 2016 г. 9:51

Запись в файл на андроиде

Qt

Добрый день. Вопрос.

Чтение из файла на андроид устройстве организовать можно.
Но как в тот же файл что-то записать. хыть строчку какую-нить.

При таком варианте

QFile file_compressed(":/db/intest.txt");
    if (!file_compressed.open(QIODevice::WriteOnly)){
       QString line = "asd";
       QByteArray ba;
       ba.append(line);       
       file_compressed.write(ba);
    }
    file_compressed.close();

он просто говорит QIODevice::write (QFile, “:/db/intest.txt”): device not open

При рытье в сети нашел только один внятный ответ и тот не обнадеживает. Что мол QIODevice на андроиде работает только на чтение.

Есть варианты как обойти данный момент?

  • #
  • 22 ноября 2016 г. 10:33
Что-то я не помню такой проблемы.
К тому же Qt базу данных SQLite без проблем пишет. А там должен использоваться также QIODevice.
Проблема скорее всего в том, что пытаетесь через qrc ресурсы писать. Я имею ввиду вот это “:/db/intest.txt”.
Вполне возможно, что здесь могут быть грабли какие-нибудь. А если писать в определённое место в памяти телефона, используя QStandardPaths, то такой проблемы не должно быть.

НЕ не база данных а прос в файл. ПРосто на андроид устройстве при каком то действии что-то текстовое пишем в файл. НЕ в БД.

Но вопрос решен.

вот так

QString fileName  = "intest.txt";
QString filePath = QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
filePath.append( "/"+fileName);
 
QFile file_compressed(filePath);

и тогда запись начинает работать

  • andrey
  • #
  • Ответ был помечен как решение
  • 22 ноября 2016 г. 10:56

База данных SQLite, текстовый файл – это всё одно и тоже. В обоих случаях это файл, который можно открыть в текстовом редакторе. Просто у SQLite есть собственная структура. Я вот это имел ввиду. А если пишется SQLite БД, то и обычный текстовый файл будет записываться.

Ну и да. Как я и сказал, через QStandardPaths указать место файла на телефоне и вперёд записывать.

Реклама

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
  • Cheessy
  • 23 января 2018 г. 16:39

C++ - Тест 006. Перечисления

  • Результат 80 баллов
  • Очки рейтинга 4
  • Cheessy
  • 23 января 2018 г. 15:52

C++ - Тест 003. Условия и циклы

  • Результат 71 баллов
  • Очки рейтинга 1
  • Cheessy
  • 23 января 2018 г. 15:28

C++ - Тест 005. Структуры и Классы

  • Результат 66 баллов
  • Очки рейтинга -1
Последние комментарии
  • EVILEG
  • 22 января 2018 г. 8:56

QML - Урок 004. Сигналы и слоты в Qt QML

Так и будет передаваться. Это аргумент сигнала. void sendToQml(int count); Видите сигнатуру? аргумент называется count . Вот он и передаётся. А описывать в Q_PROP...

  • xintrea
  • 22 января 2018 г. 8:43

QML - Урок 004. Сигналы и слоты в Qt QML

Не понял, как будет передаваться значение count в QML, если нигде он не описан через Q_PROPERTY

  • EVILEG
  • 21 января 2018 г. 20:42

Qt/C++ - Урок 029. Изображение в базе данных в Qt – Сохранение и Восстановление

Добрый день! Подготовьте изображение к вставке в базу данных через bind, как сделано в методе insertIntoTable, в данном примере. Больше похоже на то, что вылетает неожидан...

  • Mark
  • 21 января 2018 г. 19:32

Qt/C++ - Урок 029. Изображение в базе данных в Qt – Сохранение и Восстановление

Перед этим приложение работало отлично, ошибка связана именно с добавлением данного поля

  • Mark
  • 21 января 2018 г. 19:31

Qt/C++ - Урок 029. Изображение в базе данных в Qt – Сохранение и Восстановление

также вот вывод  текста самого запроса "Insert into commands_one (name, seq, pic) values ('bnbvn','\n1. bvnb\n2. bvnb', �PNG\r\n\u001A\n );"

Сейчас обсуждают на форуме
  • EVILEG
  • 23 января 2018 г. 11:19

Как в QML наиболее правильно сделать ~50 копий изображения?

Добрый день! Вообще самое эффективное, чего я добивался в рамках QML - это отрисовка в рукопашную через OpenGL - это касается скорости отрисовки. Когда создаёте несколько изо...

256 строк в модели данных

Извиняюсь, нашел ответ тут http://www.qtcentre.org/threads/54533-QSqlQueryModel-%E2%80%98s-method-rowcount()-return-256 if(this->canFetchMore()){ this->fetchMore(); }...

  • EVILEG
  • 18 января 2018 г. 20:46

Как проверить доступность сервера

Тут скорее всего ситуативно, но по факту да, в большинстве задач можно обойтись и одним network менеджером

  • EVILEG
  • 18 января 2018 г. 20:46

QGraphicsScene

Как вариант умножать ключевые координаты, от которых вы строите весь панораму, на общую ширину панорамы и при прокрутке отталкиваться от этих кратных координат.

  • Ruslan
  • 18 января 2018 г. 11:51

Исключения. Потоки.

Все оказалось проще. Документацию то читал, но забыл нюансы. Не указывал в connect  тип подключения Qt::DirectConnection