Boa tarde pessoal, estou desenvolvendo um aplicativo para transferir alguns dados de um servidor para outro.
Vamos a Situação, aqui são enviados arquivos XML via página, esses arquivos ficam em um servidor linux, preciso listas os arquivos que estão em uma pasta e mostra-lo em uma tabela para que o usuario possa escolher qual ele vai transferir, a transefrencia vai ser para um servidor Windows, mas preciso que seja via SFTP por via FTP não é permitido o acesso.
Alguem tem algumas sugestões???
Conexao SFTP
5 Respostas
Boa tarde!Já utilizei essa biblioteca para fazer o que precisa: http://www.jcraft.com/jsch/
Att.
Obrigado Molmedo, eu tentei usar essa biblioteca mas acabei me perdendo rsrs…
poderia de dar alguma ajuda de como consigo listar os nomes dos arquivos de uma pasta? :roll:
Conseguiu efetuar com sucesso a conexão?
Chegou a ver o código de exemplo (http://www.jcraft.com/jsch/examples/Sftp.java)?
Nesse código, tem o seguinte trecho:
if(cmd.equals("ls") || cmd.equals("dir")){
String path=".";
if(cmds.size()==2) path=(String)cmds.elementAt(1);
try{
java.util.Vector vv=c.ls(path);
if(vv!=null){
for(int ii=0; ii<vv.size(); ii++){
// out.println(vv.elementAt(ii).toString());
Object obj=vv.elementAt(ii);
if(obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry){
out.println(((com.jcraft.jsch.ChannelSftp.LsEntry)obj).getLongname());
}
}
}
}
catch(SftpException e){
System.out.println(e.toString());
}
continue;
}
Esse código lista todos os arquivos disponíveis no nível que está.
Qual é a sua dúvida? Está dando algum erro?
Bem, alterei o codigo de maneira diferente e consegui mostrar os dados.
Outra duvida, tem como eu passar o arquivo do Debian pro Windows?
Resolvi o problema,
fiz algumas classes.
– Conectar ao servidor
public boolean conectaservidor(String user, String host, String port) {
boolean b = false;
try {
jsch = new JSch();
session = jsch.getSession(user, host, port);
ui = new MyUserInfo();
session.setUserInfo(ui);
session.connect();
channel = session.openChannel(“sftp”);
channel.connect();
c = (ChannelSftp) channel;
b = true;
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
return b;
}
– Desconectar do servidor
public boolean desconectaservidor() {
boolean b = false;
try {
c.disconnect();
channel.disconnect();
session.disconnect();
b = true;
} catch (Exception ex) {
System.out.println(ex);
}
return b;
}
– Essa parte uso para alimentar a tabela
int i = c.ls(dir).toArray().length;
String s = “”;
Object[] arquivo = new Object[1];
for (int cc = 0; cc < i; cc++) {
s = c.ls(dir).get(cc).toString();
s = s.substring(56, s.length());
arquivo = new Object[i];
if (s.contains(".xml")) {
arquivo[0] = s;
// System.out.println(s);
Tabela.addRow(arquivo);
}
–Classe para mover o arquivo do servidor pro pc
public boolean moveXML(String arqOld, String arqNew) {
boolean b = false;
try {
OutputStream output = new FileOutputStream(new File(destino + arqNew));
c.get(dir + arqOld, output);
output.close();
} catch (Exception e) {
System.out.println(e);
}
return b;
}
– Após mover uso essa classe pra apagar o arquivo do servidor
public void apagaXML(String arq) {
try {
c.rm(dir + arq);
//String arq2 = arq.replaceAll(".xml", “”);
<a href="//c.rename">//c.rename</a>(dir + arq, dir + arq2);
} catch (Exception ex) {
System.out.println(ex);
}
}
PS: todas essas classes eu criei junto com o frame principal pois elas trabalham com muitas variaveis e como não estava com muito tempo pra desenvolver algo mais completo fiz tudo junto pois dai não preciso ficar usando o return dos valores e tratando eles… fiz assim por preguiça mesmo :oops: mas não recomendo rsrsrs…
Muito obrigado pela ajuda e agora que esta funcionando e com mais tempo vou estruturar melhor o projeto 
Quem quiser ajudar eu no The Dark Slide é só clicar no link… ajuda eu ae :oops:
http://vwdarkside.com/en/jedi/vinicius-michelan-251769