[quote=marcobiscaro2112]A biblioteca está no link do meu post anterior. É a jCIFS [1]. Na API [2] tem vários exemplos, mas basicamente você precisa criar uma conexão remota, ler de um SmbFileInputStream e escrever em um FileOutputStream local. Algo como:
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("domain", "username", "password");
InputStream in = new SmbFileInputStream("smb://host/c/My Documents/somefile.txt", auth);
OutputStrem out = new FileOutputStream("/caminho/para/salvar/o/jar");
// aqui você lê do InputStream e escreve o valor lido no OutputStream
// talvez usar as versões Buffered(In|Out)putStream ajude na performance
Olá Marcos,você possui experiencia com esse pacote? Estou tendo alguns problemas com ele…
Estou fazendo o seguinte:
[code] jcifs.Config.setProperty( “jcifs.netbios.wins”, “10.216.6.1” );
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(“internal”, “tra”, “tra”);
SmbFile file;
file = new SmbFile(“smb://10.192.24.203/corpisa/SQL 2008/MYSQL/readme.txt”, auth);
SmbFileInputStream fis = new SmbFileInputStream(file);
SmbFileOutputStream fos = null;
byte[] b = new byte[8192];
int n;
while(( n = fis.read( b )) > 0 ) {
System.out.write( b, 0, n );
fos.write(b,0,n);
}
fos = new SmbFileOutputStream("C:/readme.txt");[/code]
Consigo pegar o arquivo e coloca-lo no SmbFile porém quando dou o fos.write ele simplesmente para a execução…
Como devo fazer para pegar o arquivo e dar o write para depois faze-lo salvar no pc ???
Estou tentando ir pelo site que você me passou mais so consegui até ai…
Obrigado
[quote=bacoco]
Olá Marcos,você possui experiencia com esse pacote? Estou tendo alguns problemas com ele…[/quote]
É Marco, não Marcos. Bem, nunca utilizei este pacote, mas parece que tem algo errado no seu código. Tente algo como:
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("internal", "tra", "tra");
SmbFile file = new SmbFile("smb://10.192.24.203/corpisa/SQL 2008/MYSQL/readme.txt", auth);
SmbFileInputStream fis = new SmbFileInputStream(file);
// você deve criar um FileOutputStream (local) e não um SmbFileOutputStream (remoto)
FileOutputStream fos = new FileOutputStream("C:/readme.txt"); // a instanciação deve vir antes do laço while
byte[] b = new byte[8192];
int n;
while (( n = fis.read( b )) > 0 ) {
fos.write(b,0,n);
}
fis.close();
fos.close();
Olá Marco,perdão o costume,meu pai possui o S no final…
Estou fazendo da seguinte maneira agora…
[code]
FileOutputStream ffs = null;
try{
jcifs.Config.setProperty( "jcifs.netbios.wins", "10.216.6.222" );
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("internal.timbrasil.com.br", "Administrator", "preventiva");
file = new SmbFile("smb://10.216.6.222/preventiva/dist/PreventivaApp.jar", auth);
SmbFileInputStream fis = new SmbFileInputStream(file);
ffs = new FileOutputStream("\\RCVNA\\PreventivaApp.jar");
byte[] b = new byte[8192];
int n;
while(( n = fis.read( b )) > 0 ) {
System.out.write( b, 0, n );
ffs.write(b,0,n);
}
}catch(Exception e){
e.printStackTrace();
System.out.println("Erro: "+e);
}finally{
//NÂO ESQUECER DE DAR CLOSE NOS STREAMS
fos.close();
ffs.close();
}
}[/code]
Porém não está funcionando,com um arquivo do tipo .txt funciona perfeitamente…
Se você tiver alguma sugestão gostaria de fazer diretamente com a pasta…
Acho que copiando a pasta seria melhor pois vai pegar todo o conteudo que preciso ao inves de ter que repetir o processo com todos os arquivos…
Obrigado.
try{
jcifs.Config.setProperty( "jcifs.netbios.wins", "10.216.6.222" );
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("internal.timbrasil.com.br", "Administrator", "preventiva");
file = new SmbFile("smb://10.216.6.222/preventiva/dist/PreventivaApp.jar", auth);
fis = new SmbFileInputStream(file);
ffs = new FileOutputStream("C:/RCVNA/PreventivaApp.jar");
byte[] b = new byte[8192];
int n;
while(( n = fis.read( b )) > 0 ) {
System.out.write( b, 0, n );
//fos.write(b,0,n);
ffs.write(b,0,n);
}
}catch(Exception e){
e.printStackTrace();
System.out.println("Erro: "+e);
}finally{
//NÂO ESQUECER DE DAR CLOSE NOS STREAMS
if (ffs != null) {
ffs.close();
}
if(fis != null){
fis.close();
}
}
}[/code]
Ele chega a criar o arquivo na pasta,porém ele fica somente com 8KB debugando ele entra no while faz um write e na segunda vez que ele vai correr dentro do while ele simplsemente para a execução,sem me retornar nada…(Alguma exceção que esqueci de tratar?)