当前位置:   article > 正文

SFTP下载客户端[单用户多线程、限速、取消、断点续传]_java sftp下载文件设置速度

java sftp下载文件设置速度
采用JSCH API(本例引用了jsch-0.1.52.jar)
官网参考 http://www.jcraft.com/jsch/

1,建立Session,对应一个用户账户,并在无传输线程时自动关闭session

  1. public class SFTPProcessor2 {
  2. private static final Logger LOGGER = Logger.getLogger(SFTPProcessor2.class);
  3. private static Session session = null;
  4. public Session getConnect(Map<String, String> serverMap) {
  5. String ftpHost = serverMap.get(SFTPConstants.SFTP_SERVER_HOST);
  6. String port = serverMap.get(SFTPConstants.SFTP_SERVER_PORT);
  7. String ftpUserName = serverMap.get(SFTPConstants.SFTP_SERVER_USERNAME);
  8. String ftpPassword = serverMap.get(SFTPConstants.SFTP_SERVER_PASSWORD);
  9. // 默认的端口22 此处我是定义到常量类中;
  10. int ftpPort = SFTPConstants.SFTP_DEFAULT_PORT;
  11. // 判断端口号是否为空,如果不为空,则赋值
  12. if (port != null && !port.equals("")) {
  13. ftpPort = Integer.valueOf(port);
  14. }
  15. JSch jsch = new JSch(); // 创建JSch对象
  16. // 按照用户名,主机ip,端口获取一个Session对象
  17. try {
  18. session = jsch.getSession(ftpUserName, ftpHost, ftpPort);
  19. LOGGER.debug("Session created.");
  20. if (ftpPassword != null) {
  21. session.setPassword(ftpPassword); // 设置密码
  22. }
  23. // 具体config中需要配置那些内容,请参照sshd服务器的配置文件/etc/ssh/sshd_config的配置
  24. Properties config = new Properties();
  25. // 设置不用检查hostKey
  26. // 如果设置成“yes”,ssh就会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,
  27. // 并且一旦计算机的密匙发生了变化,就拒绝连接。
  28. config.put("StrictHostKeyChecking", "no");
  29. // UseDNS指定,sshd的是否应该看远程主机名,检查解析主机名的远程IP地址映射到相同的IP地址。
  30. // 默认值是 “yes” 此处是由于我们SFTP服务器的DNS解析有问题,则把UseDNS设置为“no”
  31. config.put("UseDNS", "no");
  32. session.setConfig(config); // 为Session对象设置properties
  33. session.setTimeout(SFTPConstants.SFTP_DEFAULT_TIMEOUT); // 设置timeout时候
  34. session.connect(); // 经由过程Session建树链接
  35. LOGGER.debug("Session connected.");
  36. } catch (JSchException e) {
  37. // TODO Auto-generated catch block
  38. e.printStackTrace();
  39. }
  40. return session;
  41. }
  42. /* public boolean upfile(InputStream is, OutputStream os) throws IOException{
  43. boolean res = false;
  44. byte[] b = new byte[1024*1024*100];
  45. int read;
  46. if(os!=null){
  47. do {
  48. read = is.read(b, 0, b.length);
  49. if (read > 0) {
  50. os.write(b, 0, read);
  51. }
  52. os.flush();
  53. } while (read >= 0);
  54. }
  55. return res;
  56. }*/
  57. /* public void uploadFile(String localFile, String newName,
  58. String remoteFoldPath) // throws AppBizException
  59. {
  60. InputStream input = null;
  61. OutputStream os = null;
  62. try {
  63. File lf = new File(localFile);
  64. input = new FileInputStream(lf);
  65. // 改变当前路径到指定路径
  66. channel.cd(remoteFoldPath);
  67. long t1 = System.currentTimeMillis();
  68. //channel.put(input, newName);
  69. os = channel.put(newName
  70. //, new ProgressMonitor(lf.length()) // 上传时不执行init()方法
  71. ,new ProgressMo
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/873378
推荐阅读
相关标签
  

闽ICP备14008679号