Wie mit QT eine Datei löschen?



  • Ich versuche in einem Temp-Verzeichnis eine Datei zu löschen:

    QFile::remove("datei.ext");
    

    Es kommt jedesmal "Zugriff verweigert" raus, aber im Explorer kann ich die Datei ganz normal löschen. Was ist da los?



  • nur Dateiname wird wohl nicht reichen, Pfad wird wohl auch gebraucht.
    Weiss ich aber nicht genau.



  • Der Pfad steht natürlich drinnen, das war nur ein Beispiel für Syntax.



  • Poste den fehlerhaften Code.
    Ein "Beispiel" für den Fehler hilft, denn könntest Du ein Beispiel für den Fehler angeben, könntest Du ihn auch beheben.



  • Da fehlt ein "nicht".
    Ein "Beispiel" für den Fehler hilft nicht.
    Denn könntest Du ein Beispiel angeben,könntest Du den Fehler auch beheben.



  • Hab ich doch schon. Also nochmal:

    QFile::remove("C:\\Users\\User\\AppData\\Local\\Temp\\mydir\\myfile.txt");
    


  • QFile Doku lesen:

    QFile expects the file separator to be '/' regardless of operating system. The use of other separators (e.g., '\') is not supported.



  • Das spielt keine Rolle, es wird intern konvertiert. Slashes und Backslashes funktionieren unter Windows gleichermaßen.



  • Nun, ich habs inzwischen per WinAPI/Posix selber gekapselt. Damit gehts jeweils. Keine Ahnung was Qt da nicht passt. Wenn jemand trotzdem noch ne Idee hat lese ich sie gerne.



  • Ich habe keine Idee aber ich habe das ganze kurz getestet und bei mir funktionierte es.

    Test programm:

    #include <QCoreApplication>
    #include <QFile>
    #include <QtDebug>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        bool b = QFile::remove("C:\\Users\\User\\Documents\\New Text Document.txt");
        qDebug()<<"remove result: "<<b;
    
        return a.exec();
    }
    

Log in to reply