open - readfile c++
Cómo crear directorios automáticamente usando ofstream (3)
Crear un directorio con ofstream no es posible. Se utiliza principalmente para archivos. Hay dos soluciones a continuación:
Solución 1:
#include <windows.h>
int _tmain() {
//Make the directory
system("mkdir sample");
}
Solución 2:
#include <windows.h>
int _tmain() {
CreateDirectory("MyDir", NULL);
}
Esta pregunta ya tiene una respuesta aquí:
Ahora estoy escribiendo un extractor para un archivo de sistema de archivos virtual básico (sin compresión).
Mi extractor tiene problemas cuando escribe un archivo en un directorio que no existe.
Función de extracción:
void extract(ifstream * ifs, unsigned int offset, unsigned int length, std::string path)
{
char * file = new char[length];
ifs->seekg(offset);
ifs->read(file, length);
ofstream ofs(path.c_str(), ios::out|ios::binary);
ofs.write(file, length);
ofs.close();
cout << patch << ", " << length << endl;
system("pause");
delete [] file;
}
ifs
es el archivo raíz vfs, offset
es el valor cuando se inicia el archivo, la length
es la longitud del archivo y la path
es un valor del archivo que salva las compensaciones len, etc.
Por ejemplo, la ruta es data / char / actormotion.txt.
Gracias.
No es posible verificar la existencia de un directorio con ofstream
Puede usar boost::filesystem::exists
lugar
boost::filesystem::path dir("path");
if(!(boost::filesystem::exists(dir))){
std::cout<<"Doesn''t Exists"<<std::endl;
if (boost::filesystem::create_directory(dir))
std::cout << "....Successfully Created !" << std::end;
}
ofstream
nunca crea directorios. De hecho, C ++ no proporciona una forma estándar de crear un directorio.
Podría usar dirname
y mkdir
en sistemas Posix, o los equivalentes de Windows, o Boost.Filesystem. Básicamente, debe agregar algo de código justo antes de la llamada a ofstream
, para asegurarse de que existe el directorio al crearlo si es necesario.