public class DiskCache2 extends Object
Each DiskCache has a "root directory", which may be set as an absolute path, or reletive to the DiskCache "home directory". The root directory must be writeable. The DiskCache home directory is set in the following order:
Modifier and Type | Class and Description |
---|---|
static class |
DiskCache2.CachePathPolicy |
Constructor and Description |
---|
DiskCache2(String root,
boolean reletiveToHome,
int persistMinutes,
int scourEveryMinutes)
Create a cache on disk.
|
Modifier and Type | Method and Description |
---|---|
static boolean |
canWrite(File f)
Returns
true if we can write to the file. |
void |
cleanCache(File dir,
Formatter sbuff,
boolean isRoot)
Remove any files or directories whose last modified time greater than persistMinutes
|
File |
createUniqueFile(String prefix,
String suffix)
Reserve a new, uniquely named file in the root directory.
|
static void |
exit()
Be sure to call this when your application exits, otherwise your process may not exit without being killed.
|
File |
getCacheFile(String fileLocation)
Get a File in the cache, corresponding to the fileLocation.
|
static DiskCache2 |
getDefault()
Default DiskCache2 strategy: use $user_home/.unidata/cache/, no scouring, alwaysUseCache = false
Mimics default DiskCache static class
|
File |
getExistingFileOrCache(String fileLocation)
Looking for an existing file, in cache or no
|
File |
getFile(String fileLocation)
Get the named File.
|
static DiskCache2 |
getNoop() |
String |
getRootDirectory()
Get the cache root directory.
|
void |
setAlwaysUseCache(boolean alwaysUseCache)
If true, always put the file in the cache.
|
void |
setCachePathPolicy(DiskCache2.CachePathPolicy cachePathPolicy,
String cachePathPolicyParam)
Set the cache path policy
|
void |
setNeverUseCache(boolean neverUseCache)
If true, never put the file in the cache.
|
void |
setPolicy(DiskCache2.CachePathPolicy cachePathPolicy)
Set the cache path policy
|
void |
setPolicy(String policy) |
void |
setRootDirectory(String cacheDir) |
void |
showCache(PrintStream pw)
Show cache contents, for debugging.
|
String |
toString() |
public DiskCache2(String root, boolean reletiveToHome, int persistMinutes, int scourEveryMinutes)
root
- the root directory of the cache. Must be writeable.reletiveToHome
- if the root directory is relative to the cache home directory.persistMinutes
- a file is deleted if its last modified time is greater than persistMinutesscourEveryMinutes
- how often to run the scour process. If <= 0, don't scour.public static boolean canWrite(File f)
true
if we can write to the file.f
- a file. It may be a regular file or a directory. It may even be non-existent, in which case the
writability of the file's parent dir is tested.true
if we can write to the file.public void cleanCache(File dir, Formatter sbuff, boolean isRoot)
dir
- clean starting heresbuff
- status messages here, may be nullisRoot
- delete empty directories, bit not root directorypublic File createUniqueFile(String prefix, String suffix)
prefix
- The prefix string to be used in generating the file's
name; must be at least three characters longsuffix
- The suffix string to be used in generating the file's
name; may be null
, in which case the
suffix ".tmp"
will be usedpublic static void exit()
public File getCacheFile(String fileLocation)
fileLocation
- logical file locationpublic static DiskCache2 getDefault()
public File getExistingFileOrCache(String fileLocation)
fileLocation
- the original namepublic File getFile(String fileLocation)
fileLocation
- logical file locationpublic static DiskCache2 getNoop()
public String getRootDirectory()
public void setAlwaysUseCache(boolean alwaysUseCache)
alwaysUseCache
- If true, always put the file in the cachepublic void setCachePathPolicy(DiskCache2.CachePathPolicy cachePathPolicy, String cachePathPolicyParam)
cachePathPolicy
- one of:
OneDirectory (default) : replace "/" with "-", so all files are in one directory.
NestedDirectory: cache files are in nested directories under the root.
NestedTruncate: eliminate leading directoriescachePathPolicyParam
- for NestedTruncate, eliminate this stringpublic void setNeverUseCache(boolean neverUseCache)
neverUseCache
- If true, never put the file in the cachepublic void setPolicy(DiskCache2.CachePathPolicy cachePathPolicy)
cachePathPolicy
- one of:
OneDirectory (default) : replace "/" with "-", so all files are in one directory.
NestedDirectory: cache files are in nested directories under the root.
NestedTruncate: eliminate leading directoriespublic void setPolicy(String policy)
public void setRootDirectory(String cacheDir)
public void showCache(PrintStream pw)
pw
- write to this PrintStream.