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.
Duvida com javacript[arquivos e diretorios]
4 Respostas
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.
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());
}
}
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:
Servletpublic 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();
}
$.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.
Obrigado valeu.
Vou tentar qualquer coisa posto as duvidas flw.