public static EntryInfo Store(string dbFileName, string fileName, Stream input) { using (FileDB db = new FileDB(dbFileName, FileAccess.ReadWrite)) { return db.Store(fileName, input); } }
public void Shrink() { string dbFileName = this._fileStream.Name; FileAccess fileAccess = this._fileStream.CanWrite ? FileAccess.ReadWrite : FileAccess.Read; string tempFile = string.Concat(new object[] { Path.GetDirectoryName(dbFileName), Path.DirectorySeparatorChar, Path.GetFileNameWithoutExtension(dbFileName), ".temp", Path.GetExtension(dbFileName) }); if (File.Exists(tempFile)) { File.Delete(tempFile); } EntryInfo[] entries = this.ListFiles(); CreateEmptyFile(tempFile, false); using (FileDB tempDb = new FileDB(tempFile, FileAccess.ReadWrite)) { foreach (EntryInfo entry in entries) { using (MemoryStream stream = new MemoryStream()) { this.Read(entry.ID, stream); stream.Seek(0L, SeekOrigin.Begin); tempDb.Store(entry, stream); } } } this.Dispose(); File.Delete(dbFileName); File.Move(tempFile, dbFileName); this.Connect(dbFileName, fileAccess); }