Java 存储在磁盘上的图像-按名称搜索
我正在编写一个java应用程序(实际上是一个Struts2 web应用程序),我需要存储和检索图像。我发现将图像存储在数据库()中不是一个好主意,最好将它们写入磁盘上的目录中Java 存储在磁盘上的图像-按名称搜索,java,image,filesystems,Java,Image,Filesystems,我正在编写一个java应用程序(实际上是一个Struts2 web应用程序),我需要存储和检索图像。我发现将图像存储在数据库()中不是一个好主意,最好将它们写入磁盘上的目录中 在某些时候,我需要访问其名称包含某个子字符串的所有图像。如果我使用数据库,我会编写如下查询:select。。其中的名称类似于%my\u substring%。如何使用java文件系统实现相同的功能?当然,我不想加载所有图像,然后对它们进行迭代以找到具有正确名称的图像。只需使用索引文件处理即可。每次在光盘上存储图像时,其名称
在某些时候,我需要访问其名称包含某个子字符串的所有图像。如果我使用数据库,我会编写如下查询:
select。。其中的名称类似于%my\u substring%
。如何使用java文件系统实现相同的功能?当然,我不想加载所有图像,然后对它们进行迭代以找到具有正确名称的图像。只需使用索引文件处理即可。每次在光盘上存储图像时,其名称也会写入索引文件。当您搜索子字符串时,只需搜索索引并加载索引中名称为的文件,正如您链接的问题中标记的答案所述:
不要在数据库中存储图像。将图像存储在目录和
在数据库中存储对图像的引用
因此,您的查询将变成select path where name,比如%my_substring%
(其中path
是存储图像引用的列的名称)
执行查询后,应用程序将根据查询结果访问图像。我最终选择了不带数据库的解决方案(尽管@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
File[]listOfFiles=folder.listFiles();
for(int i=0;i
}}
您能详细说明一下您需要从java文件系统中获得什么吗?我只需要找到名称包含特定子字符串的所有文件。您能更具体地说明我应该使用哪种索引文件吗?到目前为止,我在核心JavaAPI中找不到任何IndexFile类,但在ApacheLucene库中找到了一个。这就是你所说的索引文件吗?只需在光盘上创建一个.txt文件,并在其中写入IMG的名称。如果你在img标题中搜索一个子串,只需搜索索引文件,我认为没有任何库可以处理索引文件,确实是聪明的方法