Пример #1
0
 public static EntryInfo Store(string dbFileName, string fileName, Stream input)
 {
     using (FileDB db = new FileDB(dbFileName, FileAccess.ReadWrite))
     {
         return db.Store(fileName, input);
     }
 }
Пример #2
0
 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);
 }