2015-05-04 6 views
6

In Boost-Dateisystem gibt es eine Funktion create_directory, die ein Verzeichnis erstellt. Wie erstelle ich eine Datei? Ich könnte einen erstellen, indem ich ein boost::filesystem::ofstream Objekt definiere, aber das würde auch die Datei öffnen, also würde ich close darauf aufrufen müssen, bevor ich andere Sachen dazu machen könnte, wie umbenennen oder löschen. Ist das der einzige Weg?Wie erstelle ich eine Datei mit Boost-Dateisystem, ohne es zu öffnen

Antwort

5

Boost Dateisystem V3 bietet keine touch(1) Funktion;

Auch touch wird creat + eine Datei schließen, schauen Sie am Ausgang des strace:

open("/tmp/q", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 47 
dup2(47, 0)        = 0 
close(47)        = 0 
utimensat(0, NULL, NULL, 0)    = 0 

Ich denke, Ihre vernünftigste Wette ist, um nur eine Wrapper-Funktion zu erstellen, die die Datei geschlossen wird.

1

können Sie nur so etwas wie verwenden

// ... code ... 
    boost::filesystem::ofstream("/path/to/file"); 
    boost::filesystem::rename("/path/to/file", "/path/to/renamed_file"); 
    // ... code ... 

, die eine leere Datei erstellen und sofort benennen Sie es, ohne die Notwendigkeit, sie an jedem Punkt zu schließen.

Verwandte Themen