2014-04-24 14 views
6

Avere uno strano problema quando si tenta di rimuovere un file che ho appena scaricato con Qt.QFile :: rimuovere non rimuovere il file?

Il mio codice:

QString location = "/path/to/app/Application.app"; 
QFile *rmFile = new QFile(location); 
rmFile->remove(); 

file non è stato rimosso.

Qualche idea cosa potrebbe essere sbagliato?

+0

Controllare sempre il valore restituito. Causa potrebbe essere il permesso o il blocco essendo in uso o percorso errato. – user2672165

+0

Qual è il valore restituito dalla chiamata di rimozione? Vedere 'if (! RmFile-> remove()) qDebug() << rmFile.errorString();' Inoltre, in questo caso speciale, l'istanza è un overkill. Puoi chiamare direttamente il metodo statico. – lpapp

+1

Se si utilizza Mac, "/path/to/app/Application.app" punta a una directory e non al file, no? – vahancho

risposta

7

Se si tratta di una directory come sembra essere, si desidera utilizzare la seguente API con Qt 5:

bool QDir::removeRecursively()

al contrario di QFile. Pertanto, scriverebbe qualcosa del genere:

QString location = "/path/to/app/Application.app"; 
QDir *rmDir = new QDir(location); 
rmDir->removeRecursively(); 

Nota che non utilizzerei personalmente un oggetto heap solo per questo. Stack object sarebbe sufficiente in questo semplice caso.

+0

Fantastico! Grazie, accettando al più presto :) – user3490755