存储在磁盘上的图像 - 按名称搜索

时间:2015-05-29 14:22:44

标签: java image filesystems

我正在编写一个java应用程序(实际上是一个Struts2 Web应用程序),我需要存储和检索图像。我发现将图像存储在数据库(Can I store images in MySQL)中不是一个好主意,最好将它们写在磁盘上,放在目录中。

在某些时候我需要访问名称中包含某个子字符串的所有图像。如果我使用数据库,我会写一个这样的查询:select .. where name like %my_substring%。如何使用java文件系统实现相同的功能?当然,我不想加载所有图像,然后迭代它们以找到具有正确名称的图像。

3 个答案:

答案 0 :(得分:1)

只需使用索引文件处理它。每次将图像存储在光盘上时,其名称也会写入索引文件中。当您搜索子字符串时,只需搜索索引并使用索引中的名称加载文件

答案 1 :(得分:1)

正如您所链接的问题中的明确答案所述:

  

不要将图像存储在数据库中。将图像存储在目录和   存储对数据库中图像的引用

因此,您的查询将变为select path where name like %my_substring%(其中path是存储图像引用的列的名称)。

执行查询后,您的应用程序将根据查询结果访问图像。

答案 2 :(得分:0)

我最终选择了没有数据库的解决方案(虽然@npinti提供的解决方案非常聪明)。所以我做了类似的事情

File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
  if (listOfFiles[i].isFile()) {
    if(listOfFiles[i].getName().contains(my_substring)){
     //add the file to a list of files to be displayed 

}}}