Newsgroup: it.comp.java
Titolo: How to open a file with a servlet? (code included)

1- I need to open a file
(something as 
www.mydomain.com/hello.txt
)
2- store it in a String or TextArea
3- Manipulate that String
I have the following code giving me always a FILE NOT FOUND
(I am trying with localhost/hello.txt)
*************************************
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.awt.TextArea;
/**
 * Prova apertura file
 */
public class InOut2 extends HttpServlet
{
    TextArea TA = new TextArea();
    public static final String TITLE = "Yes, It's working!";
    public void service (HttpServletRequest request,
HttpServletResponse response)
        throws ServletException, IOException
    {
        // set content type and other response header fields first
        response.setContentType("text/html");
        // get the communication channel with the requesting client
        PrintWriter out = response.getWriter();
        // get the server identification
        String server = getServletConfig().getServletContext
().getServerInfo();
		//Apro e Visualizzo il file
		String nomefile = ("listone.xml");
        try     {
          BufferedReader in =
          new BufferedReader(
            new FileReader(nomefile));
            String s, s2 = new String();
        while((s = in.readLine())!= null)
          s2 += s + "\n";
          TA.append(s2);
          in.close();
		  out.println("sembra okkey");
              }
        catch(FileNotFoundException ee) {out.println("File Not Found:"
+ nomefile +"");
        } catch(IOException eee) { out.println("IO Exception"); }
		categoria = TA.getText();
    }
}
***********************************
Any help appreciated
Thanks
Leonardo Battagli
--
Posted from 
m2.deja.com
 [64.57.169.64] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

             new FileReader(nomefile));
Se vuoi aprire un file in questo modo ti serve il percorso completo del
file sulla macchina su cui la servlet gira (/home/httpd/docs/hello.txt,
c:\programmi\apache group\apache\htdocs\hello.txt, ...), non una url
(localhost/hello.txt). Un URL lo puoi usare per leggere un file su una
macchina remota.
Ma perchè posti in inglese su un ng italiano e poi commenti in italiano il
sorgente?
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

             new FileReader(nomefile));
...
Per aprire un file "remoto", cioe' indicato da un URL, non bisogna
usare un FileReader, bensi' un InputStreamReader ottenuto a partire da
un URL.
Quindi:
BufferedReader in =
  new BufferedReader(
    new InputStreamReader(
      (new URL("
http://host/miofile.txt
")).openStream()));
Un saluto
  Lucio
--
(
  Lucio Benfante
 
http://www.dei.unipd.it/~benfante
                                          )
Sent via Deja.com 
http://www.deja.com/
Before you buy.

       (new URL("
http://host/miofile.txt
")).openStream()));
Leonardo Battagli
-----------------------------------



...
Nessuno dei due! Il primo ovviamente perche' File gestiche files e non
URL, il secondo perche' (ancora ovviamente) openStream() restituisce un
InputStream e non un OutputStream come richiede il costruttore di
OutputStreamWriter.
La soluzione e':
URLConnection uc =
  (new URL("
http://host/miofile.txt
")).openConnection();
uc.setDoOutput(true);
BufferedWriter out =
  new BufferedWriter(
    new OutputStreamWriter(uc.getOutputStream()));
Comunque ti consiglio di leggere la documentazione del JDK e di fare
qualche prova prima di porre domande con soluzioni OVVIAMENTE sbagliate
(basta vedere cosa restituisce il metodo openStream() per capire che
forse non posso usare un InputStream per scrivere su un file)...sai la
gente dopo un po' si stufa di fare da balia e non risponde piu'...
Un saluto
  Lucio
