Ler o conteudo de um diretorio pegando o nome dos arquivos

8 respostas
A

Ola Pessoal, Boa Tarde!

Preciso Ler o conteudo de um diretorio web pegando o nome dos arquivos colocalos em uma lista para seleção e donwload.

Alguem pode me ajudar?

8 Respostas

L

Talvez esse exemplo possa ajudar:

Listar arquivos de uma pasta

private void listarArquivos(){
		int i = 0;
		File arq = new File("C:\\");
		File arquivos[] = arq.listFiles();
		while (i != arquivos.length){
			String nome = arquivos[i].getName();
			System.out.println("Nome do arquivo: "+ nome);
			i++;
		}
	}
P

vc utiliza algum framework???

vÊ se ajuda: http://www.guj.com.br/java/228061-carregar-lista-de-arquivos-de-um-diretorio#1168823

A

Ola lucasportela.

Sua resposta ta ok em um contexto local mais acho que para o contexto web não funciona.

A

Ola pedruhenrik.

Sim (richfaces)

E

Não existe um “diretório web” a menos que o web server disponibilize a lista dos arquivos para você. Se essa lista for disponibilizada (pode ser que o web server proíba a visualização dessa lista de arquivos), o formato nunca é padronizado, portanto você precisa pegar a página que contém a lista de arquivos e decodificar o HTML retornado.

P

e ae Andre,

então vc utiliza JSF né? rsrsrs

vÊ se ajuda:

http://www.guj.com.br/java/42851-jsf—fazendo-um-link-para-download
http://www.guj.com.br/java/52965-exibir-link-para-download-com-jsf
http://www.guj.com.br/java/100327-listar-um-diretorio-usando-jsf
http://pbjug-grupo-de-usuarios-java-da-paraiba.1393240.n2.nabble.com/JSF-download-de-arquivos-td2218286.html

att,

L

Nunca usei a URL
porém, de uma verificada nisso, talvez possa servir

URL url = new URL(protocol, host, port, file);
		File arq = new File(url);
A

Ola pedruhenrik.

Tentei usar os links que vc me passou mais não roda. Vou postar o codigo.

<a4j:commandLink id="exelbaixar" action="#{ManterPalavra.download}" value="Donwload Planiha Exel"
                                           reRender="listagens" style="margin-left:20px;"/>
public String download() {

        OperacoesArquivos.downloadFile("SKU_BATCH_REQUEST_" + mes + "_" + ano
                + ".xls", "/exelsaida/", "xls", FacesContext.getCurrentInstance());

        mensagem("mPrincipal", "Donwload efetuado com sucesso!");
        return "gotoDownload";

    }    }
package uteis;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;

public class OperacoesArquivos {

    public static synchronized void downloadFile(String filename, String fileLocation, String mimeType,
                                                 FacesContext facesContext) {

        ExternalContext context = facesContext.getExternalContext(); // Context
        ServletContext sc = (ServletContext) facesContext.getExternalContext().getContext();
        String path = sc.getRealPath(fileLocation); // Localizacao do arquivo
        String fullFileName = path + filename;
        File file = new File(fullFileName); // LINHA ALTERADA

        HttpServletResponse response = (HttpServletResponse) context.getResponse();
        response.setHeader("Content-Disposition", "attachment;filename=\"" + fullFileName + "\""); //aki eu seto o header e o nome q vai aparecer na hr do donwload
        response.setContentLength((int) file.length()); // O tamanho do arquivo
        response.setContentType(mimeType); // e obviamente o tipo

        try {
            FileInputStream in = new FileInputStream(file);
            OutputStream out = response.getOutputStream();

            byte[] buf = new byte[(int)file.length()];
            int count;
            while ((count = in.read(buf)) >= 0) {
                out.write(buf, 0, count);
            }
            in.close();
            out.flush();
            out.close();
        facesContext.responseComplete();
        } catch (IOException ex) {

            
            System.out.println("Error in downloadFile: " + ex.getMessage());

            ex.printStackTrace();
        }
    }
}

Ele encontra o arquivo não da erro mais abre uma pagina em branco.

Criado 3 de janeiro de 2011
Ultima resposta 3 de jan. de 2011
Respostas 8
Participantes 4