Nel file system boost esiste una funzione create_directory
che crea una directory. Come creo un file? Potrei crearne uno definendo un oggetto boost::filesystem::ofstream
ma questo aprirebbe anche il file, quindi dovrei chiamare close
su di esso prima che potessi fare altre cose su di esso, come rinominare o eliminare. È questo l'unico modo?Come creare un file con boost filesystem senza aprirlo
6
A
risposta
5
Boost Filesystem V3 non fornisce una funzione touch(1)
;
Anche touch
sarà creat + chiudere un file, basta guardare l'uscita di 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
penso che la cosa più ragionevole è quella di creare solo una funzione wrapper che chiude il file.
1
Si può solo usare qualcosa come
// ... code ...
boost::filesystem::ofstream("/path/to/file");
boost::filesystem::rename("/path/to/file", "/path/to/renamed_file");
// ... code ...
che creerà un file vuoto e subito rinominarlo, senza necessità di chiudere in qualsiasi punto.