2016-07-28 4 views
1

Ich möchte die Datei mit einem bestimmten Namen erstellen. Wenn es bereits existiert, dann möchte ich eine andere Datei mit dem Namen um eine Nummer angehängt erstellen. Zum Beispiel möchte ich die Datei log.txt erstellen, aber es ist bereits da. Dann werde ich neue Datei erstellen log1.txt, log2.txt, log3.txt ....

Gibt es eine gute Möglichkeit, in die Datei Duplizierungsinformationen aufzunehmen?In doppelte Dateiinformationen extrahieren

+0

Warum möchten Sie nicht nur die Dateiexistenz testen? Zum Beispiel durch Aufruf von 'stat()'. – GMichael

+0

Oh Danke !!!!!!!! – hellowl

Antwort

1

einfach überprüfen, ob die Datei vorhanden ist, wenn ja, überprüfen Sie für die nächste und so weiter, wie in diesem Code:

#include <sys/stat.h> 
#include <iostream> 
#include <fstream> 
#include <string> 

/** 
* Check if a file exists 
* @return true if and only if the file exists, false else 
*/ 
bool fileExists(const std::string& file) { 
    struct stat buf; 
    return (stat(file.c_str(), &buf) == 0); 
} 

int main() { 
     // Base name for our file 
     std::string filename = "log.txt"; 
     // If the file exists...     
     if(fileExists(filename)) { 
       int i = 1; 
       // construct the next filename 
       filename = "log" + std::to_string(i) + ".txt"; 
       // and check again, 
       // until you find a filename that doesn't exist 
       while (fileExists(filename)) { 
         filename = "log" + std::to_string(++i) + ".txt"; 
       } 
     } 
     // 'filename' now holds a name for a file that 
     // does not exist 

     // open the file 
     std::ofstream outfile(filename); 
     // write 'foo' inside the file 
     outfile << "foo\n"; 
     // close the file 
     outfile.close(); 

     return 0; 
} 

, die ein nicht-genommen Namen finden und eine Datei mit diesem Namen erstellen, schreibe 'foo' hinein und schließe die Datei schließlich.


Ich wurde für den Code von here inspiriert.

+0

Oh, danke an deine Antwort. Vielen Dank!! – hellowl