Carregar arquivos de deiretorio em java ee

4 respostas
R

Bom dia pessoal, a alguns dias estou tentando resolver um problema que me esta estressando um pouco, se vcs puderem me dar uma luz eu agradeço.

package com.as.commerce.util;

import com.as.commerce.dao.FotoProduto;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletContext;
import javax.servlet.Servlet;

public class LerImagens {

    public ArrayList getImagem() throws MalformedURLException, IOException{
        
        //num deu certo
        //String name = getServlet().getServletContext().getRealPath("/nomeDoProjeto/web");
        
        String url = getClass().getResource("").getPath();
        File diretorio = new File(url);
        String[] arquivos = diretorio.list();

       if (arquivos == null) {
            //Diretorio Vazio
           return null;
        } else {
            
            ArrayList list = new ArrayList();
            for (int i = 0; i<arquivos.length; i++) {
                //pega os nomes
                FotoProduto fotoProduto = new FotoProduto();
                String filename = arquivos[i];
                fotoProduto.setNome(filename);
                list.add(fotoProduto);
            }
            return list;
        }
    }
    
}

O que eu preciso: quero que no site as imagens sejam carregadas automaticamente, foi para isso que criei essa classe, as imagem estão em /Páginas Web/images/produtos/100 (uso netbeans), mas a porcaria do File num consegue achar esse caminho nem ferrando (talvez eu seja um animal e não esteja conseguindo), tipo se ele soubesse onde ele esta (essa classe esta em /Pacotes de código fonte/com.as.commerce.util/LerImagens.java) eu faria que nem no php volto algumas pastas e entro na que eu quero tipo assim ../../Páginas Web/images/produtos/100.

O que já tentei:
File diretorio = new File("/images/produtos/100/");
File diretorio = new File("http://localhost:8080/ECommmerce//images/produtos/100/");
File diretorio = new File("../../images/produtos/100/");

E até agora nada, se puderem me ajudar eu agradeço, se não tbm agradeço.

Valeu!

4 Respostas

R

:cry:

Pelo menos me deem um oi?!?!?!?!?!?!?!?!?

R

Tem alguém ai?

L

Isso não é a coisa mais simples do mundo. Você pode não achar o que deseja devido ao servidor de aplicação usar classloaders diferentes.

O jeito mais promissor é usar o método ServletContext.getResourcePaths.

R

O Leonardo, valeu mano, pelo menos vc me deu uma resposta.

Deixa eu te pergunta, esse esquema de classloaders é o jeito que o servidor carrega as classes?

Estou usando o Glassfish

E como ficaria com esse ServletContext?

tipo: File diretorio = new File(ServletContext.getResoucePaths("http://localhost:8080/ECommmerce//images/produtos/100/"));

Valeu!!!

Criado 10 de janeiro de 2009
Ultima resposta 29 de jan. de 2009
Respostas 4
Participantes 2