* @param uniqueID
* a unique ID used to locate the cached resource
*
+ * @return the number of bytes written
+ *
* @throws IOException
* in case of I/O error
*/
- public void save(InputStream in, String uniqueID) throws IOException {
+ public long save(InputStream in, String uniqueID) throws IOException {
File cached = getCached(uniqueID);
cached.getParentFile().mkdirs();
- save(in, cached);
+ return save(in, cached);
}
/**
* @param url
* the {@link URL} used to locate the cached resource
*
+ * @return the number of bytes written
+ *
* @throws IOException
* in case of I/O error
*/
- public void save(InputStream in, URL url) throws IOException {
+ public long save(InputStream in, URL url) throws IOException {
File cached = getCached(url);
- save(in, cached);
+ return save(in, cached);
}
/**
* @param cached
* the cached {@link File} to save to
*
+ * @return the number of bytes written
+ *
* @throws IOException
* in case of I/O error
*/
- private void save(InputStream in, File cached) throws IOException {
- // We delete AFTER so not to remove the subdir we will use...
- IOUtils.write(in, cached);
+ private long save(InputStream in, File cached) throws IOException {
+ // We want to force at least an immediate SAVE/LOAD to work for some
+ // workflows, even if we don't accept cached files (times set to "0"
+ // -- and not "-1" or a positive value)
clean(true, dir, 10);
+ cached.getParentFile().mkdirs(); // in case we deleted our own parent
+ long bytes = IOUtils.write(in, cached);
+ return bytes;
}
/**