devo fare una jsp che dopo aver cercato dei file(.jsp) in una cartella(che risiede sul server) mi deve far sbucare la lista dei file che ha trovato sottoforma di link(cioè mettiamo che trovo pippo.jsp,devo fare in modo che sia cliccabile dall'utente e mi porti a una seconda jsp).Questa è la mia funzione CercaFiles:
package Cercahtml;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.InputStreamReader;
import java.io.BufferedReader ;
import java.io.IOException;
public class CercaFiles {
//contatore usato per numerare i file ottenuti
private static int count = 0;
private static File to;
private static File from;
private static PrintWriter pw;
private static String [] vetthtml;
public static void main(String[] args) {
try {
// Input da tastiera per inserire il path dove cercare i file da modificare
String path=new String();
System.out.println("Inserisci il path completo dove cercare i files html da modificare: \t");
InputStreamReader reader = new InputStreamReader (System.in);
BufferedReader myInput = new BufferedReader (reader);
path=myInput.readLine();
//directory dove cercare i file con determinate estensioni
from = new File(path);
//nome del file da cercare. Ad esempio cerco un file di nome pippo inserirò pippo
//se non specificato cercherà tutti i file con qualsiasi nome
String nome = "";
//estensione del file da cercare. Ad esempio *.mp3 inseriro .mp3
//se non specificato cercherà tutti i files con qualsiasi estensione
String tipo = ".jsp";
//file che memorizzerà il risultato della ricerca
to = new File(path+"file"+tipo+".txt");
to.createNewFile();
pw = new PrintWriter(new FileWriter(to), true);
//metodo ricorsivo che esplora la directory from
esploraFile(from, nome, tipo);
if(count==0)
System.out.println("Nessun file trovato");
} catch (IOException e) {
System.err.println("Errore");
}
finally{
pw.close();
System.out.println("Fine");
}
}
public static void esploraFile(File from, String nome, String tipo) {
//utilizziamo per la ricerca un filtro
File[] files = from.listFiles(new Filter(nome, tipo));
vetthtml= new String [files.length];
//stampiamo su ogni riga i file trovati
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()){
//salvo nell array il path di ogni file trovato
vetthtml[i]= files[i].getAbsolutePath();
//questo lo uso per vedere se tutto funziona bene,mi salvo i ris in un txt per controllo
pw.println(files[i].getName());
//pw.println("\t\t"+files[i].getAbsolutePath());
//System.out.println(count + " " + files[i].getName());
//System.out.println("\t\t" + files[i].getAbsolutePath());
System.out.println(vetthtml[i]);
count++;
}
else
esploraFile(files[i],nome,tipo);
}
}
}
class Filter implements FilenameFilter {
//estensione del file
private String tipo, nome;
public Filter(String nome, String tipo) {
this.nome = nome;
this.tipo = tipo;
}
//accettiamo tutti i file con estensione s e le directory che non siano
//nascoste
public boolean accept(File dir, String file) {
File f = new File(dir, file);
//controllo sul tipo.
//Ad esempio se cerco "pippo.txt" la indexOf(.txt) è uguale a 6 ed è uguale
// ed è uguale a 10("pippo.txt".length()) - 4 (".txt".length)
boolean flag1=true;
if(tipo!=null && tipo!="")
flag1=(file.indexOf(tipo) == file.length()-tipo.length());
//controllo sul nome
//flag2 è true se il file contiene la parola cercata
boolean flag2=true;
if(nome!=null && nome!="")
flag2=file.toUpperCase().indexOf(nome.toUpperCase( ))!=-1;
//ritorno i file che passano il controllo del tipo e del nome le directory
return ( ( flag1 && flag2 ) || f.isDirectory()) && !f.isHidden();
}
}
e qui il mio problema....in teoria dovrei fare una jsp con una import della classe cercafiles poi creare un'istanza di quella classe e usare la esplorafile su quell istanza e per ogni valore di vetthtml fare una <a href= <%=vetthtml[i] %>
giusto??ora quello che nn capisco se io uso cercafiles su un det path,la ricerca è effettuata in automatico sul server?o verrebbe effettuata sul client dal momento che lancio da li la jsp?magari la domanda è stupida ma nn sono un esperto e se mi aiutate voi magari mi sento sollevato....grazie a tutti.
comunque se faccio cosi il server di netbeans mi da errore mi aiutate a capire:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.io.File,java.io.FileWriter,java.io.Fi lenameFilter,java.io.IOException,java.io.PrintWrit er,Cercahtml.CercaFiles "%>
<% CercaFiles c= new CercaFiles(); %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>JSP Page</h1>
<h2>Scegli il file html da modificare:</h2>
<FORM method='POST' action='modifica.jsp'>
<% c.esplorafile(); %>
<%= c.vetthtml[0] %>
</FORM>
</body>
</html>
e questo è l errore che da il server:
An error occurred at line: 22 in the jsp file: /index.jsp
Generated servlet error:
C:\Documents and Settings\F4s4n0\.netbeans\5.5\apache-tomcat-5.5.17_base\work\Catalina\localhost\paginajsp\org\ apache\jsp\index_jsp.java:71: cannot find symbol
symbol : method esplorafile()
location: class Cercahtml.CercaFiles
c.esplorafile();
^
An error occurred at line: 24 in the jsp file: /index.jsp
Generated servlet error:
C:\Documents and Settings\F4s4n0\.netbeans\5.5\apache-tomcat-5.5.17_base\work\Catalina\localhost\paginajsp\org\ apache\jsp\index_jsp.java:75: vetthtml has private access in Cercahtml.CercaFiles
out.print( c.vetthtml[0] );
^
2 errors

Rispondi quotando