write open example definicion c++ filestream

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.