我有一个fop方法,它采用绝对文件路径从磁盘中读取它们。但是我需要多次读取那些相同的文件,然后我想跳过每次从磁盘读取相同的文件。所以我需要帮助来实现解决方案,我将在内存中传递文件的路径,如果文件在内存中则将从那里读取,否则它将首先加载到内存中然后从内存中读取,以使整个过程更快。因为当前代码每次都在磁盘中查找文件,这使得执行速度变慢。
答案 0 :(得分:1)
保留对文件内容的Map
个文件引用。当您需要访问文件时,请查看Map
。如果文件有条目,请使用映射的内容。否则,像平常一样加载文件,但将文件引用和内容添加到Map
。像这样:
Map<Path, byte[]> fileContentMap = new HashMap<>();
Path filePath = Paths.get("some/path/to/a/file");
byte[] fileContents;
if(fileContentMap.containsKey(filePath)){
fileContents = fileContentMap.get(filePath);
}else{
fileContents = Files.readAllBytes(filePath);
fileContentMap.put(filePath, fileContents);
}
//use fileContents however you need