我正在编写一个java应用程序(实际上是一个Struts2 Web应用程序),我需要存储和检索图像。我发现将图像存储在数据库(Can I store images in MySQL)中不是一个好主意,最好将它们写在磁盘上,放在目录中。
在某些时候我需要访问名称中包含某个子字符串的所有图像。如果我使用数据库,我会写一个这样的查询:select .. where name like %my_substring%
。如何使用java文件系统实现相同的功能?当然,我不想加载所有图像,然后迭代它们以找到具有正确名称的图像。
答案 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
}}}