Problema con attributo di sola lettura di un file in c++

di il
4 risposte

Problema con attributo di sola lettura di un file in c++

Ciao a tutti ! Mi presento: mi chiamo Luca e sono nuovo sia del Forum che della programmazione Mondo affascinante eh eh

Mi sto dilettando con c++ di visual studio 2005 ed ho incontrato un problema che non riesco a risolvere:
Nel mio programmino ho la necessità di copiare dei files da cd-rom ad una directory situata nell'hdd, fino a qui nessun problema. Il problema si pone quando devo cancellare quella directory dopo l'uso : non posso eliminare la directory perche contiene files con attributo di sola lettura.

Come posso ovviare a questo problema ? In che modo posso togliere l'attributo di sola lettura di una directory e tutto il suo contenuto ?

Vi ringrazio per una eventuale rispota !

Luca

4 Risposte

  • Re: Problema con attributo di sola lettura di un file in c++

    Ciao,

    Se programmi win32 l'api SetFileAttributes può fare al caso tuo... che funzione usi esattamente per la copia e la creazione della directory?

    Altrimenti la _chmod (o chmod) può impostare gli attributi di lettura e scrittura per un determinato file

    Ciaociao
  • Re: Problema con attributo di sola lettura di un file in c++

    bottomap ha scritto:


    Ciao,

    Se programmi win32 l'api SetFileAttributes può fare al caso tuo... che funzione usi esattamente per la copia e la creazione della directory?

    Altrimenti la _chmod (o chmod) può impostare gli attributi di lettura e scrittura per un determinato file

    Ciaociao
    Ciao grazie per la risposta allora ti inserisco cosa sto facendo eh eh :

    Sto usando CLR Application Windows Form


    private: System::Void button11_Click(System::Object^ sender, System::EventArgs^ e) {
    folderBrowserDialog1->ShowDialog();
    String^ target = folderBrowserDialog1->SelectedPath;
    int fCounter;
    MessageBox::Show(target);
    MessageBox::Show(String::Concat ( "Numero di immagini da memorizzare in cache : ", Directory::GetFiles( target )->Length ));
    String^ pathHdd = "c:\\\\imagetmp";
    fCounter = Directory::GetFiles( target )->Length;
    if ( fCounter != 0 )
    {
    if ( Directory::Exists( pathHdd ) )
    {
    Directory::Delete( pathHdd , true);
    }
    try
    {
    Directory::CreateDirectory( pathHdd );
    }
    catch (Exception ^ e)
    {
    MessageBox::Show( "Errore di scrittura nella Directory Temporanea.", "Errore di Sistema", MessageBoxButtons::OK, MessageBoxIcon::Error);
    }
    // Creo la referenza per la directory
    DirectoryInfo^ di = gcnew DirectoryInfo( target );
    // Creo l'array che rappresenta i files nella Directory
    array<FileInfo^>^fi = di->GetFiles();
    Collections::IEnumerator^ myEnum = fi->GetEnumerator();
    toolStripProgressBar1->Visible = true;
    toolStripProgressBar1->Minimum = 0;
    toolStripProgressBar1->Maximum = fCounter;
    toolStripProgressBar1->Value = 1;
    toolStripProgressBar1->Step =1;
    toolStripStatusLabel1->Text = "Caricamento immagini in corso...";
    toolStripStatusLabel1->Visible = true;
    while ( myEnum->MoveNext() )
    {
    try
    {
    FileInfo^ fiTemp = safe_cast<FileInfo^>(myEnum->Current);
    String^ images = folderBrowserDialog1->SelectedPath + String::Concat ("\\\\",fiTemp->Name );
    String^ tempPath = pathHdd + String::Concat ("\\\\",fiTemp->Name);
    // MessageBox::Show( images );
    File::Copy (images, tempPath, false);
    toolStripProgressBar1->PerformStep();
    Application::DoEvents();
    }

    catch ( Exception^ e )
    {
    MessageBox::Show ( "Impossibile utilizzare la Directory Temporanea."," Errore di Sistema", MessageBoxButtons::OK, MessageBoxIcon::Error);
    }
    }
    }
    toolStripProgressBar1->Visible = false;
    toolStripStatusLabel1->Visible = false;
    MessageBox::Show( "Caricamento immagini nella cartella temporanea completato.","Stato", MessageBoxButtons::OK, MessageBoxIcon::Information);
    }



    Come posso utilizzare il comando che mi hai suggerito ?

    Grazie per la tua pazienza

    Luca
  • Re: Problema con attributo di sola lettura di un file in c++

    Ciao,

    Dovevi specificare che stai programmando .NET... in questo caso hai a disposizione la File.SetAttributes nella System.IO... ti rimando ad MSDN per ulteriori informazioni, ad ogni modo basta usare qualcosa del genere:

    using namespace System::IO;
    File::SetAttributes(path,FileAttributes::Normal);

    Ciaociao
  • Re: Problema con attributo di sola lettura di un file in c++

    bottomap ha scritto:


    Ciao,

    Dovevi specificare che stai programmando .NET... in questo caso hai a disposizione la File.SetAttributes nella System.IO... ti rimando ad MSDN per ulteriori informazioni, ad ogni modo basta usare qualcosa del genere:

    using namespace System::IO;
    File::SetAttributes(path,FileAttributes::Normal);

    Ciaociao
    Caro amico ho risolto il problema grazie a te !!! Ho cercato e ricercato su MSDN ma la sfortuna vuole non sono mai finito in quel comando

    Mi scuso se non ho specificato che programmavo in .net

    Un grazie enorme ancora !!!

    Ciao Ciao !!!
Devi accedere o registrarti per scrivere nel forum
4 risposte