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);