Fix: create missing directories before file creation
Changes: - Added ensureDirectoryExists() helper using _mkdir() - Automatically create missing directories before file operations - Added FileHelper include in FileManager - Removed placeholder files/README.md Fixes #1793
This commit is contained in:
@@ -1 +0,0 @@
|
||||
Place files here.
|
||||
@@ -11,10 +11,39 @@ Date: 22-May-2026
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include <direct.h>
|
||||
#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);
|
||||
|
||||
@@ -15,6 +15,7 @@ Date: 22-May-2026
|
||||
#include <fstream>
|
||||
#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);
|
||||
|
||||
Reference in New Issue
Block a user