PDA

Visualizza la versione completa : [java] servlet accesso a file


etabeta_7
06-11-2003, 17:46
ciao ho una servlet

che deve leggere un file txt ed inserire il suo contenuto in una text area

il problema e' che non riesco a leggere il file

errore
--------------------------------------------
java.io.FileNotFoundException: Text_1.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
--------------------------------------------


lo messo in una cartella chiamata FILE alla stessa altezza dei file jsp e del WEB-INF


credo che il mio problema e' scrivere il path di ricerca nel file java che dovrebbe leggere il file e scrivere il suo contenuto nella textarea



porcacciala******** :dhò: :dhò: :dhò: :dhò: :dhò: sono proprio un testone



ciao a tutti :ciauz:

andrea00001
06-11-2003, 17:50
secondo me non hai messo il try{ ..catch() etc..

serve per vedere se ci sono errori, java necessita di ciò per lavorare con i file, se non dovesse essere all'interno di quest'ultimo fatti scrivere lo stack.

scrivimi
Andreaa00001@hotmail.com

etabeta_7
06-11-2003, 17:55
lo messo ho almeno penso di averlo fatto


un altra idea e' che non configuro bene il file web.xml


code:
----------------------------------------------
package stampaFile;

import java.io.*;
import javax.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;
import javax.print.event.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class PrintPageTxt extends HttpServlet {

public PrintPageTxt() {
}
public void doGet( HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
String file = request.getParameter("File");

if(file==null || file.equals("")){
response.setHeader("Pragma", "no-cache" );
response.setHeader("Cache-Control", "no-cache" );
RequestDispatcher rd;
rd = request.getRequestDispatcher( "Errore.jsp" );
rd.forward( request, response );
return;
}
else{

try {
String fName = file;
FileInputStream fis = new FileInputStream(fName);

// apre il file
InputStream is = new BufferedInputStream(fis);

// cerca la stampante di default
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService service = PrintServiceLookup.lookupDefaultPrintService();

// crea la stampa
DocPrintJob job = service.createPrintJob();
Doc doc = new SimpleDoc(is, flavor, null);

// stampa
job.print(doc, null);

// chiudo il flusso dei dati per sicurezza
is.close();
} catch (PrintException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
response.setHeader("Pragma", "no-cache" );
response.setHeader("Cache-Control", "no-cache" );
RequestDispatcher rd;
rd = request.getRequestDispatcher( "Risultato.jsp" );
rd.forward( request, response );
}
}
-------------------------------------------


ciao :ciauz:

Angelo1974
06-11-2003, 21:08
Ciao. Ma devi far eseguire un upload? Nel senso che la riga di codice seguente:
String file = request.getParameter("File");

ti deve dare solo il nome del file, giusto? Ma sul lato server il file suddetto c'è? La JVM punterà sempre nella directory della tua web-app -> è quì che cercherà il file con quel dato nome. Se, poi, vuoi effettuare l'upload client -> server.... be' non ti basta una cosa del genere. A proposito tra domani e sabato darò 1 occhio al tuo codice che mi hai spedito
Ciao :ciauz:

etabeta_7
07-11-2003, 08:33
per spiegarmi meglio la mia pagina iniziale ha una select

dove io passo il valore (nome del file) al programma questo legge il nome del file con
(String file = request.getParameter("File");

a questo punto se il nome del file non e' vuoto ("") o nullo (null)

lui dovrebbe leggerne il contenuto
(String fName = file;
FileInputStream fis = new FileInputStream(fName);
// apre il file
InputStream is = new BufferedInputStream(fis);

il problema e' alla riga
FileInputStream fis = new FileInputStream(fName);
dove mi da l' errore
java.io.FileNotFoundException: Text_1.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)

il file e' sul lato server e deve rimanerci non voglio che venga caricato sul lato client

questo file e' nella cartella \StampaFileJsp\FILE
nella cartella \Webapps di Tomcat

struttura:
webapps-|
---------------| StampaFileJsp-|
------------------------------| WEB-INF-|
------------------------------|--------------- |classes-|
------------------------------|FILE-|-------------------- |stampaFile-|
------------------------------|------- |Text_1.txt----------------------- |PrintText.class
------------------------------|Index.jsp
------------------------------|Errore.jsp
------------------------------|Risultato.jsp


che path devo mettere per fare in modo che mi venga letto il File Text_1.txt dal mio programma???

Angelo1974
07-11-2003, 15:36
String openFile="FILE/"+file;

FileInputStream fis = new FileInputStream(openFile);

Non l'ho provato ma ad occhio dovrebbe andare bene.. prova. Ciao :ciauz:

etabeta_7
07-11-2003, 16:06
:cry:

purtroppo non funziona nemmeno cosi


ed era una soluzione che avevo gia provato

comunque ti ringrazio

Angelo1974
07-11-2003, 16:53
Ciao allora potresti provare a dargli il path assoluto e cioè:

String file = request.getParameter("File");

String openFile="c:/file/"+file;

FileInputStream fis = new FileInputStream(openFile);

ovviamente in c dovresti avere 1 cartella di nome file
così dovrebbe andare

etabeta_7
07-11-2003, 17:01
scusa ma il mio file deve essere sul client o sul server???


da quello che leggo tu lo vuoi mettere sul client

io invece lo volevo sul server


oppure non ho capito una mazza come al solito :dhò:

etabeta_7
07-11-2003, 18:14
:98

Loading