在java中将多个图像写入outputstream

时间:2015-05-02 07:57:07

标签: java outputstream

我在eclipse中的resources文件夹下有一个名为images的文件夹。 我在图像文件夹中有多个图像。 我想通过调用Web服务在浏览器中显示所有图像。 我已经尝试了以下代码。我只能检索一个图像。我想要多个图像。我该怎么做?

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("images/").getPath());

            final String[] EXTENSIONS = new String[]{
                    "png","jpg"// and other formats you need
            };
            // filter to identify images based on their extensions
            final FilenameFilter IMAGE_FILTER = new FilenameFilter() 
            {

                @Override
                public boolean accept(final File dir, final String name) {
                    for (final String ext : EXTENSIONS) {
                        if (name.endsWith("." + ext)) {
                            return (true);
                        }
                    }
                    return (false);
                }
            };
            if (file.isDirectory()) 
            {   
                 //list of files I get
                for (final File fi : file.listFiles(IMAGE_FILTER)) 
                {
                    OutputStream out =null;
                    OutputStream out1 =null;
                    BufferedImage bi =null;
                    try 
                    {
                        System.out.println("file" +fi);
                        //I get different files from images folder and add that to bufferedImage.
                        bi= ImageIO.read(fi);

                        response.setContentType("image/jpeg");
                        out= response.getOutputStream();
                        ImageIO.write(bi, "png", out);
                        ImageIO.write(bi, "jpg", out);
                        out.close();
                    }
                    catch (final IOException e) 
                    {
                        // handle errors here
                        e.printStackTrace();
                    }
                }
            }

1 个答案:

答案 0 :(得分:0)

资源不是文件。无法保证它们甚至存在于文件系统中,仅存在于JAR或WAR文件中。所以使用File方法是行不通的。

在任何情况下,只是将图像流序列化到浏览器也不会起作用。您应该生成一个HTML页面,其中包含<img>个元素,包含图像的URL,并组织这些URL可下载。可能首先使用资源机制是不恰当的。