Pergunta boba número 1. Você sabe acessar um arquivo na rede do Windows pelo Windows Explorer?
Pergunta boba número 2. Você sabe como mapear um drive?
Ferrarini,
Não sei se existe problema, mas eu uso o forum como uma fonte de pesquisa e um ambiente onde as pessoas se ajudam sem fins lucrativos.
Vou anexar uma classe para voce testar no seu ambiente. É só passar os parâmetros para o metodo estático writeNetworkFile.
Anexei um jar também que deve estar no classpath da sua aplicação
Espero que ajude!
[quote=entanglement]Pergunta boba número 1. Você sabe acessar um arquivo na rede do Windows pelo Windows Explorer?
Pergunta boba número 2. Você sabe como mapear um drive?
[/quote]
MP
Tem como fazer isso sendo que o sharename é uma partição F do HD windows 2003 de um servidor? Valeu
ronaldocwb , teria como copiar aquele arquivo ou somente referencia-lo para ser enviado como anexo pela API JavaMail, a sua classe e o jcfs foram os únicos que funcionaram.
public void writeNetworkFile(String usuario, String senha, String filePath, byte[] data) throws Exception {
//Lê no nome de usuario
System.setProperty("jcifs.smb.client.username", usuario);
//Lê a senha
System.setProperty("jcifs.smb.client.password", senha);
/*
* Lê o path onde o arquivo vai ser gerado,
* o formato X:
* file://192.168.0.100/Users/xpto/"
* onde 192.168.0.100 é o ip da maquina
* ou
* file://sputinik/Users/xpto/"
* onde sputinik e o nome da maquina
*/
SmbFile f = new SmbFile(filePath);
//Abre o arquivo
SmbFileOutputStream out = new SmbFileOutputStream(f);
//Escreve o conteudo do arquivo
out.write(data);
//Fecha o arquivo e o libera para ser usado por outra aplica��o
out.close();
}
Eu implementei essa classe para tentar copiar um arquivo html no servidor e copiar ele para a máquina onde rodo um programa mas está dando um erro , até esta sexta estava funcionando mas hoje parou segue o erro:
Jul 11, 2012 12:00:28 PM automaticnewsletter.IO.IO copia
Grave: null
jcifs.smb.SmbException:
jcifs.util.transport.TransportException: Transport2 timedout waiting for response to SmbComSessionSetupAndX[command=SMB_COM_SESSION_SETUP_ANDX,received=false,errorCode=0,flags=0x0018,flags2=0xC003,signSeq=0,tid=0,pid=21503,uid=0,mid=2,wordCount=13,byteCount=57,andxCommand=0x75,andxOffset=118,snd_buf_size=16644,maxMpxCount=10,VC_NUMBER=1,sessionKey=0,passwordLength=0,unicodePasswordLength=0,capabilities=4180,accountName=Guest,primaryDomain=PEDRO-123,NATIVE_OS=Linux,NATIVE_LANMAN=jCIFS]
at jcifs.util.transport.Transport.sendrecv(Transport.java:74)
at jcifs.smb.SmbTransport.send(SmbTransport.java:580)
at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:264)
at jcifs.smb.SmbSession.send(SmbSession.java:223)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:144)
at jcifs.smb.SmbFile.connect(SmbFile.java:792)
at automaticnewsletter.IO.IO.copia(IO.java:87)
at automaticnewsletter.Main.main(Main.java:48)
at jcifs.smb.SmbTransport.send(SmbTransport.java:585)
at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:264)
at jcifs.smb.SmbSession.send(SmbSession.java:223)
at jcifs.smb.SmbTree.treeConnect(SmbTree.java:144)
at jcifs.smb.SmbFile.connect(SmbFile.java:792)
at automaticnewsletter.IO.IO.copia(IO.java:87)
at automaticnewsletter.Main.main(Main.java:48)
segue o código
//file://192.168.0.100/xpto/"
System.setProperty("jcifs.smb.client.username", "user_pedro");
System.setProperty("jcifs.smb.client.password", "fast7002");
try
{
sb= new SmbFile("file://192.168.50.4/id000003/index.html");
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("PEDRO-123","Guest","");
sp=new SmbFile("file://PEDRO-123/ASP/index266.html", auth);
sp.createNewFile();
sp.setAttributes(sb.getAttributes());
sb.copyTo(sp);
}
catch (MalformedURLException | SmbException ex)
{
Logger.getLogger(IO.class.getName()).log(Level.SEVERE, null, ex);
}
O meu problema é que eu estou rodando linux ubuntu e o server é win2003.
Valeu
Queria fazer uma pergunta. Seria possível você montar esse arquivo no seu filesystem, em vez de tentar usar o JCIFS? Acho que é mais prático.
Normalmente você usa uma meia-dúzia de comandos, parecidos com os seguintes:
http://cri.ch/linux/docs/sk0001.html
Alguns desses comandos você usa “sudo” para executá-los, se for o caso.
Já testei isso e realmente funciona porem este programa não irá ficar rodando sobre meu pc, ele irá ficar com o pessoal de marketing que usa a plataforma Windows xp eu só estou corrigindo os erros e criando uma versão nova.