【问题标题】:Why can't I create multiple files in the app directory with Qt on Android为什么我不能在 Android 上使用 Qt 在 app 目录中创建多个文件
【发布时间】:2020-10-25 14:32:09
【问题描述】:

我有一个带有按钮的基本 Android 应用程序,每次推送时都应在应用程序标准目录 (/storage/emulated/0/Android/data/org.qtproject.example.MyApp/files/) 中创建一个文件。

这是每次按下按钮时执行的代码:

void MainWindow::on_pushButton_clicked() {
    QString filePath = "/storage/emulated/0/Android/data/org.qtproject.example.MyApp/files/" + "file_number_" + QString::number(counter);
    QFile myFile(filePath);

    if (myFile.open(QIODevice::WriteOnly)) {
        myFile.write("foo");
        ++counter;
    } else {
        qDebug() << "Unable to open file" << filePath;
    }

它应该创建文件“file_number_0”、“file_number_1”、“file number_2”等。

但它似乎只适用于第一个文件。多次按下它不会创建多个文件,但也不会为以下文件抛出错误。它确实打印“无法打开文件”。所有文件似乎都已成功打开,但实际上在目录中创建了初始文件。

如果我删除应用程序目录并在运行时重新创建它,下一个文件将再次成功创建,但以下文件不会,就像开始时一样。

【问题讨论】:

  • 这不能解决您的问题,但您应该在写入文件后关闭该文件。
  • 打印出您的filePath 变量并在打开之前确保它是正确的:qDebug()&lt;&lt;filePath;
  • @RossRogers filePath/storage/emulated/0/Android/data/org.qtproject.example.myApp/files/file_number_0/storage/emulated/0/Android/data/org.qtproject.example.myApp/files/file_number_1 等等。该路径每次看起来都很好,似乎不会导致问题。
  • 使用file_number_" + QString::number(counter) 之类的相对路径而不是完整路径可能会更好。这可能是您应用的“当前工作目录”,也就是 $CWD。​​span>
  • @RossRogers 它确实为所有文件打印“找到它”

标签: android c++ qt


【解决方案1】:

问题似乎是我正在通过 USB 从计算机查看文件夹。我认为这会以某种方式与 Android 的权限系统混淆。

我关闭了电脑上的文件资源管理器,转而使用手机上的资源管理器,现在它可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2011-07-13
    • 2012-11-22
    • 2015-05-02
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多