*
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
#include "IFileSystem.h"
|
||||
#include "../log/CLog.h"
|
||||
|
||||
namespace LifeCore
|
||||
{
|
||||
/*IFolder* IFileSystem::GetFolder(const String& path)
|
||||
{
|
||||
String folder, rPath;
|
||||
GetRootFolderS(path, folder, rPath);
|
||||
|
||||
if(folder.length()<2)
|
||||
return g_rootFolder;
|
||||
else if(folder.length() <1)
|
||||
return (IFolder*)0;
|
||||
if(rPath.length()<2)
|
||||
{
|
||||
if (folder == g_rootFolder->Name)
|
||||
return g_rootFolder;
|
||||
else
|
||||
return g_rootFolder->GetFolder(folder);
|
||||
}
|
||||
else
|
||||
{
|
||||
IFolder* f = g_rootFolder;
|
||||
IFolder* t;
|
||||
do
|
||||
{
|
||||
GetRootFolderS(rPath, folder, rPath);
|
||||
t = f->GetFolder(folder);
|
||||
if(t)
|
||||
{
|
||||
f = t;
|
||||
}
|
||||
else
|
||||
{
|
||||
return f;
|
||||
}
|
||||
}
|
||||
while(rPath.length()>1);
|
||||
return f;
|
||||
}
|
||||
}
|
||||
|
||||
IFile* IFileSystem::GetFile(const String& path)
|
||||
{
|
||||
String dir = GetFilePath(path, String(_text("/")));
|
||||
String file = GetFileName(path, String(_text("/")));
|
||||
IFolder* f = GetFolder(dir);
|
||||
if(f)
|
||||
return f->GetFile(file);
|
||||
return (IFile*)0;
|
||||
}*/
|
||||
int IFileSystem::NewFile(const String& path, int size)
|
||||
{
|
||||
String dir = GetFilePath(path, String(_text("/")));
|
||||
String fileName = GetFileName(path, String(_text("/")));
|
||||
IFolder* f;
|
||||
if(GetFolder(dir, &f) != SC_OK)
|
||||
{
|
||||
if(this->CreateFolder(dir) != SC_OK)
|
||||
return SC_FAIL;
|
||||
|
||||
if(GetFolder(dir, &f) != SC_OK)
|
||||
return SC_FAIL;
|
||||
}
|
||||
|
||||
IFile* file;
|
||||
if(f->GetFile(fileName, &file) != SC_OK)
|
||||
f->NewFile(fileName, size);
|
||||
|
||||
return SC_OK;
|
||||
}
|
||||
int IFileSystem::CreateFolder(const String& path)
|
||||
{
|
||||
String folder, rPath;
|
||||
IFolder* f;
|
||||
GetRootFolderS(path, folder, rPath);
|
||||
if(folder == g_rootFolder->Name)
|
||||
f = g_rootFolder;
|
||||
else
|
||||
return SC_FAIL;
|
||||
|
||||
do
|
||||
{
|
||||
GetRootFolderS(rPath, folder, rPath);
|
||||
if(folder == STR(""))
|
||||
return SC_OK;
|
||||
else
|
||||
{
|
||||
if(f->GetFolder(folder, &f) != SC_OK)
|
||||
{
|
||||
f = f->NewFolder(folder);
|
||||
}
|
||||
}
|
||||
} while (rPath != STR(""));
|
||||
|
||||
return SC_OK;
|
||||
}
|
||||
|
||||
int IFileSystem::GetFile(const String& path, IFile** file)
|
||||
{
|
||||
String dir = GetFilePath(path, String(_text("/")));
|
||||
String fileName = GetFileName(path, String(_text("/")));
|
||||
IFolder* f;
|
||||
if(GetFolder(dir, &f) == SC_OK)
|
||||
return f->GetFile(fileName, file);
|
||||
|
||||
return SC_FAIL;
|
||||
}
|
||||
int IFileSystem::GetFolder(const String& path, IFolder** output)
|
||||
{
|
||||
String folder, rPath;
|
||||
GetRootFolderS(path, folder, rPath);
|
||||
|
||||
if(folder.length()<2)
|
||||
{
|
||||
(*output) = g_rootFolder;
|
||||
return SC_OK;
|
||||
}
|
||||
else if(folder.length() < 1)
|
||||
{
|
||||
return SC_FAIL;
|
||||
}
|
||||
if(rPath.length()<2)
|
||||
{
|
||||
if (folder == g_rootFolder->Name)
|
||||
{
|
||||
(*output) = g_rootFolder;
|
||||
return SC_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
return g_rootFolder->GetFolder(folder, output);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
IFolder* f = g_rootFolder;
|
||||
IFolder* t;
|
||||
do
|
||||
{
|
||||
GetRootFolderS(rPath, folder, rPath);
|
||||
if(f->GetFolder(folder, &t) == SC_OK)
|
||||
{
|
||||
f = t;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*output) = f;
|
||||
return SC_OK;
|
||||
}
|
||||
}
|
||||
while(rPath.length() > 1);
|
||||
(*output) = f;
|
||||
return SC_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user