Gravando arquivo usando a rede windows

Pessoal, tou usando o Jakarta FileUpload e preciso gravar um arquivo na rede.

to usando o método write e fazendo

write(new File("//nomedamaquina/compartilhamento/arquivo.ext"));

mas isso não dá certo, alguma dica???

O q esta acontecendo? Ele esta dando algum erro? Esta gerando em outro lugar? Nao esta gerando?

Abraco

Qual é o erro que dá?

Exception in thread “main” java.io.FileNotFoundException:
\servidor\share\arquivo
(The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at Test168.main(Test168.java:5)

ou

Exception in thread “main” java.io.FileNotFoundException: \servidor\share\arquivo (Access is denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at Test168.main(Test168.java:5)

Se for o erro “Access is denied”, é realmente isso (não é “mensagem de erro errada” que às vezes acontece), e você precisa dar direito de acesso aos arquivos e diretórios para o usuário…

Não é problema de usar \ ou // porque o Java já converte as barras para a direção certa.

[code]type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

java.lang.NullPointerException
org.apache.commons.fileupload.DefaultFileItem.write(DefaultFileItem.java:442)
org.apache.jsp.cadastraPortaria_jsp._jspService(cadastraPortaria_jsp.java:126)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.[/code]

O que é estranhíssimo pois é como se o fileItem estivesse retornando NULL… e quando eu bot um diretório local o código funciona

Meu código ´s o seguinte:

         else {
         	try {
         	    data.replace('/','.');
         	    fitem.write(new File("//intranet/diogenes/teste.doc"));
	     	}
	       	catch (Exception e) {
	        		%>
	         		&lt;%= e %&gt;
	         		<%
       		}
         }

Se vc sabe utilizar o pacote io e net do API, vc faz por elas.

Eu sei usar mas eu tenho que tratar esse arquivo que é enviado pelo browser por meio de um jsp.

         else {
         	try {
         	    //data.replace('/','.');
         	    File f = new File("c:/novo/teste.doc");
         	    if (fitem == null)
         	    %>
         	    <p>fitem == null</p>
         	    &lt;%
         	    fitem.write(f);
	     	}
	       	catch (Exception e) {
	        		%&gt;
	         		&lt;%= e %&gt;
	        		<%
       		}
         }
         else {
         	try {
         	    //data.replace('/','.');
         	    File f = new File("c:/novo/teste.doc");
         	    if (fitem == null)
         	    %>
         	    <p>fitem == null</p>
         	    &lt;%
         	    fitem.write(f);
	     	}
	       	catch (Exception e) {
	        		%&gt;
	         		&lt;%= e %&gt;
	        		<%
       		}
         }

Olhem que estranho, enquanto o fitem SEMPRE é NULL, quando mudo do new File para um lugar no HD o arquivo é escrito numa boa, apesar do fitem ser NULL. Quando o local é na rede dá NullPointerException…

De qualquer maneira veja se tem algum problema com esse usuário.
Um exemplo: quando você usa o Tomcat (ou JBoss, ou outro servidor de aplicações, como o Sun Java System Application Server) como serviço do Windows, ele pode ser instalado como “Local System Account” (não sei o nome certo em português, meu Windows 2003 está em inglês) - nesse caso você não vai conseguir acessar a rede mesmo, ou então como “This account”. Veja no Control Panel, Services, como está registrado o Tomcat (supondo que você está usando esse cara, e que é um serviço do Windows). Você precisaria configurar como “This account” e cadastrar um usuário e senha válidos na rede.