Cancellazione cartella

di il
8 risposte

Cancellazione cartella

Ciao a tutti , visto che è il mio primo post mi presento, sono Simone ed abito a Roma.

Io ho un problema con un comando all'interno di un mio programma che sto sviluppando in C++.
All'interno del mio programma (sto lavorando su visual studio 2008) devo cancellare dei file e delle cartelle.
per quanto riguarda i file riesco a cancellarli senza problema mentre per le cartelle riscontro un problema.

se uso _rmdir("nome cartella"); me la cancella ma solo se questa cartella si trova direttamente nella cartella di progetto.
se uso _rmdir("test/nome cartella"); perchè ad esempio la cartella da cancellare è contenuta in una cartella test che sta nella cartella di progetto non mi funziona.
ho fatto anche una prova a mettere una cartella prova da cancellare su C:
_rmdir("c:\\prova"); e cosi funziona
quindi in ultima analisi pensavo di dare alla funzione _rmdir(); tutto il path completo ma non funziona e credo sia dovuto al fatto che nel path sono contenuti spazi come ad esempio Document and Setting. come posso risolvere questo problema?

Grazie in anticipo

8 Risposte

  • Re: Cancellazione cartella

    
    The _rmdir function deletes the directory specified by dirname. The directory must be empty, and it must not be the current working directory or the root directory.
    
    Qual'è il valore di ritorno della funzione. se -1 qual'è il valore di ritorno di _get_errno
  • Re: Cancellazione cartella

    Ho capito dove sta il problema ed ho risolto.
    all'interno di queste cartelle il mio programma in un altra parte dell'applicazione non ci salva solo immagini come io vorrei ma anche un file nascosto Thumbas.db quindi una volta scoperto questo ho cancellato oltre alle singole immagini anche il file e quindi tutto ok poi. semplicemente con il path test/nome cartella.
    Grazie comunque della risposta e dell'interessamento e scusate per il topic.
    comunque colgo l'occasione per iniziare a scrivere, domandare e rispondere alle domande.
  • Re: Cancellazione cartella

    Questa domanda che sto per fare credo sia piu complicata e articolata?
    esiste una funzione c/c++ per la gestione delle cartelle che vada bene sia su windows che su linux?
    perché ho notato che su linux si usa il comando rmdir o mkdir mentre sotto windows la variante _rmdir e _mkdir.
    Il mio obiettivo è quello di produrre software portabile su entrambe le piattaforme.
    Da vecchi ricordi scolastici so che dovrei agire con #ifdef per capire su quale piattaforma sta girando e poi agire di conseguenza ma per ora le mie conoscenze non mi permettono di fare ciò
    Qualcuno mi puo aiutare?
  • Re: Cancellazione cartella

    Intendi una cosa del genere?
    
    typedef int (*func)(const char *);
    
    #ifdef _WIN32
    func removeDirectory = _rmdir;
    #else
    func removeDirectory = rmdir;
    #endif
    
    rmdir funziona anche su WIN32 ma è deprecata.
  • Re: Cancellazione cartella

    Si proprio una cosa del genere.
    quindi rmdir dovrebbe funzionare su entrambe le piattaforme?
  • Re: Cancellazione cartella

    SI. esce un warning su visual studio ma funziona.
  • Re: Cancellazione cartella

    Ok grazie mille. gia ho notato che in effetti funziona quindi a questo punto meglio obsoleta e portabile ovunque che nuova ma funzionante solo su windows.
    e l'analogo quindi anche per mkdir ipotizzo! =)
    Grazie mille

    e questo warning cosa mi comporta? nel senso so che è un avvertimento ma rischio che in futuro non funzioni piu?
  • Re: Cancellazione cartella

    Si tanto nel 2012 tutto si ressetta per la fine del mondo quindi che te frega.
Devi accedere o registrarti per scrivere nel forum
8 risposte