private static NetworkFile PackFileData(string path) { NetworkFile file = new NetworkFile(Path.GetFileName(path), FileType.File); file.FillData(File.ReadAllBytes(path)); return(file); }
private static NetworkFile PackFolder(string path) { try { NetworkFile folderData = new NetworkFile(Path.GetFileName(path), FileType.Directory); string[] files = Directory.GetFiles(path).Where(name => !name.EndsWith(".ini")).ToArray(); //exclude .ini files (these are invisible system files) foreach (var file in files) { folderData.FillData(PackFile(file)); } string[] folders = Directory.GetDirectories(path); foreach (var folder in folders) { folderData.FillData(PackFile(folder)); } return(folderData); } catch (Exception e) { TgenLog.Log(e.ToString()); throw e; } }
public void FillData(NetworkFile file) { if (fileType != FileType.Directory) { throw new Exception("This file is of type " + fileType); } files.Add(file); }
private static void UnpackFolder(string header, NetworkFile file) { DirectoryInfo directory = Directory.CreateDirectory(Path.Combine(header, file.name)); foreach (var fileData in file.files) { UnpackFile(directory.FullName, fileData); } }
public static void UnpackFile(string header, NetworkFile file) { try { if (file.fileType == FileType.Directory) //Path is a folder { UnpackFolder(header, file); return; } else //Path is a file { UnpackFileData(header, file); return; } } catch (Exception e) { TgenLog.Log(e.ToString()); throw e; } }
private static void UnpackFileData(string header, NetworkFile file) { FileStream stream = File.Create(Path.Combine(header, file.name)); stream.Write(file.data, 0, file.data.Length); }