【发布时间】: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()<<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 它确实为所有文件打印“找到它”