CopyFile mit Verzeichnisstruktur



  • Hi Leute,
    ich benutze den Befehl

    CopyFile("datei.txt","d:\basti\kopie_von_datei.txt",FALSE);
    

    Wenn der Ordner "Basti" schon vorhanden ist dann funktioniert die ganze sache. Wenn der Ordner nicht vorhanden ist kopiert er die Datei nicht. Gibt es da ne möglichkeit das er selber die Verzeichnisse anlegt?
    Ansonsten mit welchem Befehl soll ich es dann machen?

    MfG und Danke
    Basti



  • SORRY

    Hab schon was gefunden, blind!

    // Den Zielpfad anlegen (nur nötig, falls noch nicht existiert
    AnsiString neuer_pfad;
    
    if (!DirectoryExists(neuer_pfad))  {
      if (!CreateDir(neuer_pfad))
        throw Exception("Cannot create " + neuer_pfad + " directory.");
    }  
    // GetCurrentDir() gibt das Verzeichnis zurück, in dem das Programm
    // gerade liegt
    
    CopyFile(GetCurrentDir().c_str(), neuer_pfad.c_str(),true);
    

    Das kann ich umbauen!

    MfG
    Basti

    [ Dieser Beitrag wurde am 16.04.2003 um 09:55 Uhr von B@sti editiert. ]



  • Zu früh gefreut.

    Der Beispilquellcode in der Hilfe sieht so aus

    if (!DirectoryExists("c:\\temp"))
      {
         if (!CreateDir("C:\\temp"))
             throw Exception("Cannot create c:\\temp directory.");
      }
    

    funktioniert auch. Aber meiner geht nicht, warum?

    if (!DirectoryExists("C:\\Programme\\tool\\neu\\subdir"))
      {
         if (!CreateDir("C:\\Programme\\tool\\neu\\subdir"))
             throw Exception("Cannot create directory.");
      }
    

    Vorhanden ist im Augenblick der Ordner "C:\Programme\tool" Der Ordner "neu\subdir\" soll erstellt werden!?

    MfG
    Basti



  • OK, das wars. SORRY SORRY SORRYfür die viellen Posts.
    Ich erstelle einfach die Verzeichnisse nacheinander.

    if (!DirectoryExists(dir))  {
       if (!CreateDir(dir))
          throw Exception("Cannot create directory.");
    }
    if (!DirectoryExists(subdir))  {
       if (!CreateDir(subdir))
          throw Exception("Cannot create directory.");
    }
    CopyFile(oldfile,newfile,FALSE);                  // Datei kopieren
    

    dir und subdir sind character arrays.

    MfG
    Basti



  • Im BCB6, evtl. auch früher, gibt's eine VCL-Funktion ForceDirectories, damit lassen sich "verschachtelte" Verzeichnisse in einem Rutsch erstellen.



  • Oder du verwendest ForceDirectories



  • Hi,
    ich hab folgende Problem:
    Ich nutze Turbo C++ und habe auf einem Formular 2 directoryfileboxes und 2 filelistboxes diese sind auch schön verknüpft. Muss so eine Art TotalCommander für die Schule schreiben. Nur jetzt bekomm ich das mit dem kopieren nicht hin.
    Ich muss natürlich die Aktuell markierte Datei und den neuen Pfad abfragen (also mit Variablen arbeiten) das funktioniert auch, wenn ich mir die Pfade ausgeben lassen, aber er kopiert einfach nicht. Fehlermeldung kommt auch keine.

    CODE:
    char* pfadeins = new char[ FileBoxleft->FileName.Length() + 1 ];
    strcpy( pfadeins, FileBoxleft->FileName.c_str() );

    char* pfadzwei = new char[ FileBoxright->Directory.Length() + 1 ];
    strcpy( pfadzwei, FileBoxright->Directory.c_str() );

    ShowMessage(pfadeins);
    ShowMessage(pfadzwei);

    Copy(pfadeins, pfadzwei,true);

    Weis einer Rat?
    Danke schon mal


Anmelden zum Antworten