4 namespace Monodoc.Caches
6 public class FileCache : IDocCache
10 public FileCache (string baseCacheDir)
12 this.baseCacheDir = baseCacheDir;
13 if (!Directory.Exists (baseCacheDir))
14 Directory.CreateDirectory (baseCacheDir);
17 public bool IsCached (string id)
19 return File.Exists (MakePath (id));
22 public bool CanCache (DocEntity entity)
27 public Stream GetCachedStream (string id)
29 return File.OpenRead (MakePath (id));
32 public string GetCachedString (string id)
34 return File.ReadAllText (MakePath (id));
37 public void CacheText (string id, string content)
39 File.WriteAllText (MakePath (id), content);
42 public void CacheText (string id, Stream stream)
44 using (var file = File.OpenWrite (MakePath (id)))
48 public void CacheBlob (string id, byte[] data)
50 File.WriteAllBytes (MakePath (id), data);
53 public void CacheBlob (string id, Stream stream)
55 using (var file = File.OpenWrite (MakePath (id)))
59 string MakePath (string id)
61 id = id.Replace (Path.DirectorySeparatorChar, '_');
62 return Path.Combine (baseCacheDir, id);
65 public void Dispose ()
67 if (!Directory.Exists (baseCacheDir))
71 Directory.Delete (baseCacheDir, true);