diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/files/README.md b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/files/README.md deleted file mode 100644 index 6e6b93e..0000000 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/files/README.md +++ /dev/null @@ -1 +0,0 @@ -Place files here. \ No newline at end of file diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/FileHelper.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/FileHelper.h index 3a532b1..2b3e94a 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/FileHelper.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/FileHelper.h @@ -11,10 +11,39 @@ Date: 22-May-2026 #include #include #include +#include #include "Vector.h" namespace util { + /* + Function: ensureDirectoryExists + Description: Creates all missing directories present in the given file path. + Iteratively parses the path and creates each directory level + using _mkdir() before file operations are performed. + Parameters: + - filePath: const std::string&, relative or absolute file path + Returns: + - void + Throws: + - None (_mkdir failures are intentionally ignored if directory already exists) + */ + inline void ensureDirectoryExists(const std::string& filePath) + { + size_t position = 0; + + while ((position = filePath.find('/', position)) != std::string::npos) + { + std::string directory = filePath.substr(0, position); + + if (!directory.empty()) + { + (void)_mkdir(directory.c_str()); + } + position++; + } + } + /* Function: loadRecords Description: Loads records from a given file path into a vector of strings. @@ -32,6 +61,7 @@ namespace util std::ifstream file(filePath); if (!file.is_open()) { + ensureDirectoryExists(filePath); std::ofstream newFile(filePath); newFile.close(); file.open(filePath); diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/FileManager.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/FileManager.h index 35d2935..1ea66c7 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/FileManager.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/FileManager.h @@ -15,6 +15,7 @@ Date: 22-May-2026 #include #include "Vector.h" #include "Map.h" +#include "FileHelper.h" namespace util { @@ -51,6 +52,7 @@ namespace util std::ifstream file(m_filePath); if (!file.is_open()) { + ensureDirectoryExists(m_filePath); std::ofstream newFile(m_filePath); newFile.close(); file.open(m_filePath);