I have a simple requirement where I have to read a file from a specific location and upload it to a sharedPoint (a different location). Now this reading file process can be multiple times so to avoid multiple calls, I want to store the file into a cache and read it from there. Now I am not bothered on the contents of the file. Just have to read from the spefied location and upload. Adn my application is a Java application. Can anyone suggest best way to implement the above requirement.
Advertisement
Answer
As already mentioned there is usually no need to cache whole files. A primitive solution for a cache would be to store the binary data like that:
import java.io.IOException; import java.nio.file.*; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class FileCache { private final Map<Path, byte[]> cache = new ConcurrentHashMap<>(); public byte[] read(Path file) throws IOException { byte[] data = cache.get(file); if (data == null) { data = Files.readAllBytes(file); cache.put(file, data); } return data; } }