Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 存储在磁盘上的图像-按名称搜索_Java_Image_Filesystems - Fatal编程技术网

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

Java 存储在磁盘上的图像-按名称搜索,java,image,filesystems,Java,Image,Filesystems,我正在编写一个java应用程序(实际上是一个Struts2 web应用程序),我需要存储和检索图像。我发现将图像存储在数据库()中不是一个好主意,最好将它们写入磁盘上的目录中 在某些时候,我需要访问其名称包含某个子字符串的所有图像。如果我使用数据库,我会编写如下查询:select。。其中的名称类似于%my\u substring%。如何使用java文件系统实现相同的功能?当然,我不想加载所有图像,然后对它们进行迭代以找到具有正确名称的图像。只需使用索引文件处理即可。每次在光盘上存储图像时,其名称

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


在某些时候,我需要访问其名称包含某个子字符串的所有图像。如果我使用数据库,我会编写如下查询:
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标题中搜索一个子串,只需搜索索引文件,我认为没有任何库可以处理索引文件,确实是聪明的方法