#region Copyright & License Information /* * Copyright 2007-2010 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made * available to you under the terms of the GNU General Public License * as published by the Free Software Foundation. For more information, * see LICENSE. */ #endregion using System.Collections.Generic; using System.IO; using System; namespace OpenRA.FileFormats { public class Folder : IFolder { readonly string path; int priority; // Create a new folder package public Folder(string path, int priority, Dictionary contents) { this.path = path; this.priority = priority; if (Directory.Exists(path)) Directory.Delete(path); Write(contents); } public Folder(string path, int priority) { this.path = path; this.priority = priority; if (!Directory.Exists(path)) Directory.CreateDirectory(path); } public Stream GetContent(string filename) { try { return File.OpenRead( Path.Combine( path, filename ) ); } catch { return null; } } public IEnumerable AllFileHashes() { foreach( var filename in Directory.GetFiles( path, "*", SearchOption.TopDirectoryOnly ) ) yield return PackageEntry.HashFilename( Path.GetFileName(filename) ); } public bool Exists(string filename) { return File.Exists(Path.Combine(path,filename)); } public int Priority { get { return priority; } } public void Write(Dictionary contents) { foreach (var file in contents) using (var dataStream = File.Create(Path.Combine(path, file.Key))) using (var writer = new BinaryWriter(dataStream)) writer.Write(file.Value); } } }