C ++: como modificar o registro de um arquivo de um arquivo 'criado'?
-
26-09-2019 - |
Pergunta
Preciso modificar os registros de data e hora 'criados' (se existir), 'modificados' e 'acessados' de um arquivo. Idealmente, essa seria uma solução independente da plataforma.
Eu olhei em volta das bibliotecas de impulso, mas não consigo ver nada relevante. O mais próximo que encontrei para algo relevante é isto para Windows.
Alguém pode ajudar? Obrigado.
Solução
Eu nunca os usei, mas acho que você está procurando as funções de atributo:
http://www.boost.org/doc/libs/1_44_0/libs/filesystem/v2/doc/reference.html#attribute-functions
Também existem funções para a última modificação:
template <class Path> std::time_t last_write_time(const Path& p);
template <class Path> void last_write_time(const Path& p, const std::time_t new_time);
Outras dicas
Outro, snippet de código um pouco mais simples para Windows.
Use o utime
função e utimbuf
estrutura. O método está disponível no Windows, mas é nomeado com um sublinhado líder como _utime
.
Atualizar: utime
apenas permite que você mude o Acesso e modificação tempos (via utimbuf
's actime
e modtime
Campos). Isso é mais provável porque muitos sistemas de arquivos no estilo Unix não registram o criação tempo em qualquer lugar.
Nem todos os sistemas de arquivos populares suportam 'criados' e 'acessados' registros de data e hora: http://en.wikipedia.org/wiki/comparison_of_file_systems#metadata
O Windows FileSystems o faz, mas pode não ser uma boa ideia depender deles agora, se você precisar de portabilidade. Olhando para essa mesa, tenho a impressão de que há uma tendência para adicionar suporte a eles em sistemas de arquivos mais recentes.