Java 从sftp下载多个文件
我正在使用以下代码从SFTP服务器“ara22122013.txt”下载此文件: 我想下载服务器上所有字符串为22122013的文件 这里有一个例子:Java 从sftp下载多个文件,java,sftp,Java,Sftp,我正在使用以下代码从SFTP服务器“ara22122013.txt”下载此文件: 我想下载服务器上所有字符串为22122013的文件 这里有一个例子: Sring SFTPHOST = "10.10.10.10"; int SFTPPORT = 22; String SFTPUSER = "username"; String SFTPPASS = "password"; Session session = null; Channel channel = n
Sring SFTPHOST = "10.10.10.10";
int SFTPPORT = 22;
String SFTPUSER = "username";
String SFTPPASS = "password";
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
JSch jsch = new JSch();
public void test()
{
try {
session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT);
System.out.println("Checking username, host, and port...");
session.setPassword(SFTPPASS);
System.out.println("Checking password...");
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
System.out.println("Session Connected");
channel = session.openChannel("sftp");
channel.connect();
System.out.println("Channel Connected");
channelSftp = (ChannelSftp)channel;
try {
channelSftp.get("ara22122013.txt", "C:/SFTP/" );
} catch (SftpException ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (JSchException ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
请告知如何使用?您可以使用以下代码段:
Vector path = channelSftp.ls("C:/SFTP/" );
for(String s : path){
channelSftp.get(s, "C:/SFTP/" );
}
请看一下 您可以使用以下代码。我希望这对你有帮助
import java.nio.channels.Channel;
import java.util.Vector;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
public class SFTPJava {
/**
* @param args
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
String SFTPHOST = "10.20.30.40";
int SFTPPORT = 22;
String SFTPUSER = "USERNAME";
String SFTPPASS = "PASSWORD";
String SFTPWORKINGDIR = "/home/data/";
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
try {
JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
channelSftp.cd(SFTPWORKINGDIR);
Vector filelist = channelSftp.ls(SFTPWORKINGDIR);
for (int i = 0; i < filelist.size(); i++) {
System.out.println(filelist.get(i).toString());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
import java.nio.channels.Channel;
导入java.util.Vector;
导入com.jcraft.jsch.ChannelSftp;
导入com.jcraft.jsch.jsch;
导入com.jcraft.jsch.Session;
公共类SFTPJava{
/**
*@param args
*/
@抑制警告(“未选中”)
公共静态void main(字符串[]args){
字符串SFTPHOST=“10.20.30.40”;
int-SFTPPORT=22;
字符串SFTPUSER=“用户名”;
字符串sftpass=“密码”;
字符串SFTPWORKINGDIR=“/home/data/”;
会话=空;
通道=空;
ChannelSftp ChannelSftp=null;
试一试{
JSch JSch=新的JSch();
session=jsch.getSession(SFTPUSER、sftport、SFTPPORT);
session.setPassword(sftpass);
java.util.Properties config=new java.util.Properties();
配置放置(“检查”、“否”);
session.setConfig(config);
session.connect();
通道=会话.openChannel(“sftp”);
channel.connect();
channelSftp=(channelSftp)信道;
渠道SFTP.cd(SFTPWORKINGDIR);
向量文件列表=channelSftp.ls(SFTPWORKINGDIR);
对于(int i=0;i
我尝试了您的命令,但它没有下载文件,也没有显示错误。我尝试了您的代码,但问题是程序没有进入for循环,请告知您是否有其他选项。请立即尝试,如果它没有进入for循环,请在ls之后设置断点对其进行调试。如果没有日志和/或更多代码,我将无法为您提供更多帮助。