Files
LifeProject/LifeCore/vfs/zip/IZipFileContentProvider.h
T

130 lines
2.5 KiB
C++
Raw Normal View History

2025-05-13 02:46:21 +03:00
#ifndef IZIPFILECONTENTPROVIDER_H__
#define IZIPFILECONTENTPROVIDER_H__
#include "../IContentProvider.h"
#include "../../LString.h"
#include "../IFileSystem.h"
//#include "test.h"
#include "../../minizip/unzip.h"
#include "IZipFolder.h"
namespace LifeCore
{
class IZipFileContentProvider : public IContentProvider
{
public:
~IZipFileContentProvider(){};
void Close(){}
IFileSystem* getFileSystem(){return g_fs;}
IZipFileContentProvider(const String& zipFile);
String g_rootFolder;
protected:
unz_global_info globalInfo;
IFileSystem* g_fs;
void BuildTree();
String GetZipPathWithoutFilename(const String& path);
public:
unzFile g_sourceFile;
/*private:
private string GetFilename(string path)
{
return System.IO.Path.GetFileName("C:\\" + path);
}
private IZipFolder BuildDirectory(string path)
{
string[] parts = path.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
IZipFolder folder = (IZipFolder)g_fs.GetRootFolder();
string npath = "";
for (int i = 0; i < parts.Length; i++)
{
npath+=parts[i] + "/";
IZipFolder f= (IZipFolder)folder.GetFolder(parts[i]);
if (f != null)
{
folder = f;
}
else
{
f = new IZipFolder();
f.EntryName = npath;
f.Name = parts[i];
f.Provider = this;
folder.AddFolder(f);
folder = f;
}
}
return folder;
}
private int ScanFolder(IFolder f)
{
string P = f.Path;
string[] dirs = System.IO.Directory.GetDirectories(g_rootFolder + P);
for (int i = 0; i < dirs.Length; i++)
{
}
string[] files = System.IO.Directory.GetFiles(g_rootFolder + P);
for (int i = 0; i < files.Length; i++)
{
IFSFile desc = new IFSFile();
desc.FileName = System.IO.Path.GetFileName(files[i]);
desc.Provider = this;
FileInfo info = new FileInfo(files[i]);
desc.Size = (int)info.Length;
desc.FSPath = files[i];
f.AddFile(desc);
}
return dirs.Length;
}
private string GetDirFromPath(string path)
{
string[] dirs = path.Split(System.IO.Path.DirectorySeparatorChar);
return dirs[dirs.Length - 1];
}
public:
ZipFile GetSource()
{
return g_sourceFile;
}
IFolder CreateFolder(string path)
{
return null;
}
IFileDescriptor CreateFile(string path)
{
System.IO.File.Create(path).Close();
IFSFile file = new IFSFile();
file.FileName = System.IO.Path.GetFileName(path);
file.FSPath = path;
file.Provider = this;
return file;
}
override void Close()
{
if (g_dataStream != null)
g_dataStream.Close();
}
override LifeEngine.FileSystem.IFileSystem FileSystem
{
get
{
return g_fs;
}
}*/
};
}
#endif