Duvida com javacript[arquivos e diretorios]

4 respostas
R

Tenho um diretorio com varios arquivos e queria fazer um “FOR” para, varrer esse diretorio
pegando o nome de cada arquivo, queria saber se com javascript da para fazer. Estou usando javascript porque to usando
o openlayers e outras bibliotecas javascript.

4 Respostas

T

Javascript fica do lado do cliente e não tem acesso a arquivos do computador.
Esses arquivos que você disse devem estar do lado do servidor, certo?
O que se pode fazer é utilizar o Javascript para fazer uma requisição ao servidor, que com Java percorrerá o diretório e retornará o nome dos arquivos para a chamada Javascript.

R

Tem esse codigo em jsp, mais como faço para passar para o javascript.
.JSP

String diretorio = "D:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/arquivo/";
	File arquivosPDF = new File(diretorio );
	File arquivosPDFList[] = arquivosPDF.listFiles();
	
	for(int i =0; i < arquivosPDFList.length; i++){
		 out.print(arquivosPDFList[i].getName());		 
	}
.JS
function Arquivo(e) {
       var valor = e.features.attributes;
            if(valor == // o getName aqui para comparar){
       //        dai no open eu abrir arquivo
    	 window.open("arquivo/" //aqui o getNome para abrir de acordo com nome +getName());
     }
  }
T

Hum.. primeiro eu queria te dar um dica. Por mais que seja possível escrever código Java na JSP, o ideal é que você coloque o código em uma Servlet e na JSP utilize apenas tags (JSTL, JSP EL, etc). Fica mais organizado e mais fácil de entender, facilitando a manutenção. Mesmo que você ainda esteja aprendendo, é bom já começar a se acostumar a programar assim.

Pra fazer o que você está precisando, acho que o ideal é criar uma Servlet que retorne os nomes dos arquivos no formato JSON e no Javascript você faz uma requisição Ajax a essa Servlet.
A requisição Ajax você pode utilizar JQuery, que vai facilitar bastante. Mas se preferir, pode fazer manualmente com o XMLHttpRequest/ActiveXObject.

Vou tentar dar um exemplo:

Servlet
public void doGet(HttpServletRequest request, HttpServletResponse response) {
     PrintWriter out = response.getWriter();
     response.setContentType("text/json");

     // aqui fica sua lógica para pegar o nome dos arquivos

     String json = "{ 'arquivos' : [ 'nome1.txt', 'nome2.txt', 'nome3.txt' ]}"; // tem que fazer uma string nesse formato com o nome dos arquivos concatenados
     out.print(json);
     out.close();
}
Javascript (com JQuery)
$.getJSON("urlDoServlet", function (data){
    // a variável data representa o JSON que foi retornado

    // esse array deverá possuir os nomes dos arquivos
   var arquivos = data['arquivos'];
   console.log(arquivos[0]);
});

Existem bibliotecas para trabalhar com JSON no código Java, evitando fazer concatenação de Strings. Algumas das mais conhecidas são: Json-lib e google-gson

Existe também um framework que torna tudo isso muito fácil, chamado DWR. Ele faz uma "ponte" entre seu código Java e Javascript de uma forma bem transparente e fácil de usar. Com ele não é preciso criar uma Servlet, apenas uma classe Java. Também não é preciso utilizar biblioteca JSON nem JQuery.

R

Obrigado valeu.

Vou tentar qualquer coisa posto as duvidas flw.

Criado 25 de janeiro de 2012
Ultima resposta 26 de jan. de 2012
Respostas 4
Participantes 2