如何在内存中加载文件&从那里读取它们而不是击中磁盘

时间:2015-03-29 03:00:57

标签: java apache-fop

我有一个fop方法,它采用绝对文件路径从磁盘中读取它们。但是我需要多次读取那些相同的文件,然后我想跳过每次从磁盘读取相同的文件。所以我需要帮助来实现解决方案,我将在内存中传递文件的路径,如果文件在内存中则将从那里读取,否则它将首先加载到内存中然后从内存中读取,以使整个过程更快。因为当前代码每次都在磁盘中查找文件,这使得执行速度变慢。

1 个答案:

答案 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