java 服务器文件下载
1.环境
引入的包:ganymed-ssh2-build210.jar
包的下载地址:http://www.ganymed.ethz.ch/ssh2/
2.创建文件下载类:FileLoadUtil 代码如下
package com.broadway.hhMtLoad.utils;import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
import ch.ethz.ssh2.Session;
/*** 文件下载方法* * 需要引入的包:ganymed-ssh2-build210.jar 下载地址:http://www.ganymed.ethz.ch/ssh2/* * */
public class FileLoadUtil {/*** * @param dataServerIp 服务器IP* @param dataServerUsername 服务器用户名* @param dataServerPassword 服务器登录密码* @param srcFile 要下载的文件路径* @param saveFile 保存路径* @param port 端口号* * return true:下载成功*/public static boolean downLoadFile(String dataServerIp,String dataServerUsername,String dataServerPassword,String srcFile,String saveFile,Integer port){boolean flag = false;Connection conn = new Connection(dataServerIp);Session session = null;SCPClient client =null;//session=(Session) getObject(dataServerIp, dataServerUsername, dataServerPassword, 0, "session");//client=(SCPClient) getObject(dataServerIp, dataServerUsername, dataServerPassword, 0, "client");conn=getConn(dataServerIp, dataServerUsername, dataServerPassword, port);try {session=conn.openSession();client=conn.createSCPClient();} catch (IOException e1) {e1.printStackTrace();}try {System.out.println("文件开始下载,srcFile:"+srcFile+" saveFile:"+saveFile+" "+Tools.GetCreatetime("yyyy-MM-dd HH:mm:ss"));flag = download(srcFile, saveFile, session, client); //如果是打包文件,删除包裹if (flag) {System.out.println("文件打包下载完成!"+" "+Tools.GetCreatetime("yyyy-MM-dd HH:mm:ss"));}else {System.out.println("文件下载失败!"+" "+Tools.GetCreatetime("yyyy-MM-dd HH:mm:ss"));}} catch (Exception e) {e.printStackTrace();}finally {try {session.close();} catch (Exception e2) {}try {conn.close();} catch (Exception e2) {}}return flag;}/*** 根据不同的需求得到相应的连接* @param ip* @param userName* @param pwd* @param port* @param whatWant 必须是client或者session* @return*/public static Object getObject(String ip,String userName,String pwd,int port,String whatWant){Connection conn = new Connection(ip);Session session = null;SCPClient client =null;try {conn.connect();boolean isAuthenticated = conn.authenticateWithPassword(userName, pwd);session=conn.openSession();client = new SCPClient(conn);if (isAuthenticated == false) {throw new IOException("Authentication failed.文件scp到数据服务器时发生异常");}} catch (IOException e) {e.printStackTrace();}if (whatWant!=null&&whatWant.equals("session")) {return session;}if (whatWant!=null&&whatWant.equals("client")) {return client;}return null;}/*** 获得连接* @param ip* @param userName* @param pwd* @param port* @return*/public static Connection getConn(String ip,String userName,String pwd,int port){Connection conn = new Connection(ip,port);boolean blag=false;try {conn.connect();boolean isAuthenticated = conn.authenticateWithPassword(userName, pwd);//session=conn.openSession();// client = new SCPClient(conn);if (isAuthenticated) {blag=true;}if (isAuthenticated == false) {throw new IOException("Authentication failed.文件scp到数据服务器时发生异常");}} catch (IOException e) {e.printStackTrace();}if (blag) {return conn;}else {return null;}}/*** * @param srcFile 要下载的文件* @param saveFile 保存目录,必须是目录* @param sessionSsh * @param client* @return* @throws UnsupportedEncodingException*/public static boolean download(String srcFile, String saveFile, Session sessionSsh, SCPClient client) throws UnsupportedEncodingException { //String cdmTar="tar czf /var/ftp/upload/ruku/ruku.tar.gz –directory=/var/ftp/upload/ruku ruku";boolean flag=false;// 是文件,直接下载try { String filename=srcFile.substring(srcFile.lastIndexOf("/")+1);if (filename.contains(".")) {try {client.get(srcFile, saveFile);flag=true;} catch (Exception e) {e.printStackTrace();}}else {//是文件夹,打包下载System.out.println("是文件夹,不能下载");//unGzipFile(saveFile+"/"+filename+".tar.gz");} } catch (Exception e) {e.printStackTrace();}return flag; }//------------------------------------------------------------------------------------------------------/** * 构建目录 * @param outputDir * @param subDir */ public static void createDirectory(String outputDir,String subDir){ File file = new File(outputDir); if(!(subDir == null || subDir.trim().equals(""))){//子目录不为空 file = new File(outputDir + "/" + subDir); } if(!file.exists()){ if(!file.getParentFile().exists())file.getParentFile().mkdirs();file.mkdirs(); } }
}
3.调用示例
String dataServerIp = "192.168.0.1";//服务器IP
String dataServerUsername = "root";//服务器用户名
String dataServerPassword = "password";//服务器登录密码
String srcFile = "/user/file.txt";//要下载的文件路径
String saveFile = "d://202203";//保存路径
Integer port = 22;//端口号System.out.println("下载文件-执行"+dataServerIp+" srcFile="+srcFile+" saveFile:"+saveFile);
FileLoadUtil.downLoadFile(dataServerIp, dataServerUsername, dataServerPassword, srcFile, saveFile, port);
System.out.println("下载文件-执行完 srcFile="+srcFile);
java 服务器文件下载相关推荐
- java安卓浏览器下载文件,JAVA实现文件下载,浏览器端得到数据没反应解决方案
JAVA实现文件下载,浏览器端得到数据没反应 代码如下 public void doPost(HttpServletRequest request, HttpServletResponse respo ...
- JAVA安全之JAVA服务器安全漫谈
0x00 前言 本文主要针对JAVA服务器常见的危害较大的安全问题的成因与防护进行分析,主要为了交流和抛砖引玉. 0x01 任意文件下载 示例 以下为任意文件下载漏洞的示例. DownloadActi ...
- java远程文件下载到本地
java远程文件下载到本地 适用场景:我们再登录网站后选择播放音频,如果需要将音频或者视频下载到本地时,而网站资源又进行了加密,无法获得的情况下.使用该工具类模拟浏览器访问下载 package com ...
- java提供文件下载的方法
java提供文件下载的方法 String root = getServletContext().getRealPath( " / " ); String pat ...
- 一台 Java 服务器可以跑多少个线程?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 转自:简书,作者:新栋BOOK www.jianshu.com/p ...
- 线上经验总结:一台 Java 服务器可以跑多少个线程?
一台java服务器能跑多少个线程? 这个问题来自一次线上报警如下图,超过了我们的配置阈值. 京东自研UMP监控分析 打出jstack文件,通过IBM Thread and Monitor Dump A ...
- Java服务器热部署的实现原理
[本文转载于Java服务器热部署的实现原理] 今天发现早年在大象笔记中写的一篇笔记,之前放在ijavaboy上的,现在它已经访问不了了.前几天又有同事在讨论这个问题.这里拿来分享一下. 在web应用开 ...
- java 多线程监听同一个端口_使用多线程在Java服务器中同时侦听两个端口
我正在构建一个简单的Java服务器,该服务器使用两个ServerSocket实例同时在两个端口上同时侦听客户端请求.这是服务器的代码: import java.io.PrintWriter; impo ...
- JAVA实现服务器间拷贝文件,寻找在Java服务器之间传输大文件的好方法
在这个项目中有一个主要的数据库服务器,其他安装在不同地方的服务器维护着自己的本地数据库.我们必须允许每个系统将其本地数据库更新为主要数据库上的任何版本.所有的服务器都运行Java环境.寻找在Java服 ...
最新文章
- VMware vSphere: What’s New [V 5.1]
- dbutility mysql_c# 数据库通用类DbUtility
- gl.getAttribLocation P41 获取name参数指定的attribute变量存储地址
- 报表需求源源不断?手把手教你提升报表通用性
- c语言怎么编辑错题本,嵌入式错题本
- 如何规范你的Git commit?
- aws使用技巧_AWS:避免那些“神圣的法案”时刻的一些技巧
- new关键字和newInstance()方法的区别?Class.forName()
- ai端到端_如何使用行为树构建端到端的对话式AI系统
- 字典排序什么意思_列表及字典的排序
- tensorflow2.3匹配python版本_Python 包安装和管理工具 pip 19.2 发布
- CMU Deep Learning 2018 by Bhiksha Raj 学习记录(8)
- SpringBoot 2.1.5(8)---发者工具
- 杭电2897邂逅明下邂逅明下
- 【python】拉普拉斯和sobel对图像处理
- 15. Window clearTimeout() 方法
- Confluent修改许可,限制其他云供应商
- 运用正则表达式在Asp中过滤Html标签代码的四种不同方法
- VMware安装Windows XP虚拟机并手动安装外加驱动程序
- Python 列表元素的排序