Créer un répertoire s'il n'existe pas
Dans mon application je veux copier un fichier à l'autre disque dur si c'est mon code:
#include <windows.h>
using namespace std;
int main(int argc, char* argv[] )
{
string Input = "C:\\Emploi NAm.docx";
string CopiedFile = "Emploi NAm.docx";
string OutputFolder = "D:\\test";
CopyFile(Input.c_str(), string(OutputFolder+CopiedFile).c_str(), TRUE);
return 0;
}
donc, après l'exécution de cette, il me montre dans le D:
disque dur un fichier testEmploi NAm.docx
mais je veux lui créer le dossier s'il n'existe pas.
Je veux le faire sans l'aide de la bibliothèque Boost.
Vous devez vous connecter pour publier un commentaire.
Utiliser la WINAPI
CreateDirectory()
fonction pour créer un dossier.Vous pouvez utiliser cette fonction sans vérifier si le répertoire existe déjà que ce sera un échec, mais
GetLastError()
sera de retourERROR_ALREADY_EXISTS
:Le code de construction du fichier cible est incorrect:
ce serait de produire
"D:\testEmploi Nam.docx"
: il y a un manque de séparateur de chemin entre l'annuaire et le nom de fichier. Exemple de corrigé:CopyFile()
appelCreateDirectory()
pour créerOutputFolder
.argument of type "const char *" is incompatible with parameter of type "LPCWSTR"
.Probablement la méthode la plus simple et la plus efficace est d'utiliser boost et le boost::filesystem fonctions. De cette façon, vous pouvez créer un répertoire tout simplement et de s'assurer qu'il est indépendant de la plateforme.
boost::filesystem::create_directory - documentation
#include <boost/filesystem.hpp>
Aussi, passer-lboost_filesystem -lboost_system
à l'éditeur de liensIci est la manière la plus simple pour créer un dossier.......
Ce code ci-dessus fonctionne bien pour moi.
_mkdir
va aussi faire le travail.https://msdn.microsoft.com/en-us/library/2fkk4dzw.aspx
_mkdir(OutputFolder.c_str())
.Utilisation
CreateDirectory (char *DirName, SECURITY_ATTRIBUTES Attribs);
Si la fonction réussit, elle renvoie non nulle sinon
NULL
.OpenCV Spécifiques
Opencv prend en charge les systèmes de fichiers, probablement grâce à sa dépendance coup de pouce.
Vous pouvez utiliser cstdlib
Bien- http://www.cplusplus.com/articles/j3wTURfi/
vous pouvez également vérifier si le répertoire existe déjà en utilisant
-p
option ne fonctionne pas avec windows mkdir version.