java:sftp 推送文件至服務器

1、需要依賴:

<!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.54</version>
</dependency>

2、判斷目標服務器 需要文件夾是否存在,不存在則創建創建

	/**
	 * 檢查創建多層文件夾
	 * 
	 * @param sftp
	 * @param path
	 */
	public static void checkDirsIsExsit(ChannelSftp sftp, String path) {

		
		try {
			sftp.cd(path);

		} catch (Exception e) {
			// TODO Auto-generated catch block

			String[] dirName = path.split("/");
			String t = "";
			for (int i = 0; i < dirName.length; i++) {			
				t = t + "/" + dirName[i];
				checkDirIsExsit(sftp, t);
			}

		}

	}

	/**
	 * ftp創建單個文件夾
	 * 
	 * @param sftp
	 * @param path
	 */
	public static void checkDirIsExsit(ChannelSftp sftp, String path) {
		try {
			sftp.cd(path);

		} catch (Exception e) {
			// TODO Auto-generated catch block

			try {
				System.out.println("新建文件夾:" + path);
				sftp.mkdir(path);

			} catch (SftpException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
	}

3、sftp 推送文件之服務器

	/**
	 * 推送文件
	 * 
	 * @param cfg
	 * @param src
	 * @param dst
	 * @throws JSchException
	 */
	public static void ftpPut(String userName, String host, int port, String passWord, String src, String dst)
			throws JSchException {

		JSch jsch = new JSch();

		Session session = jsch.getSession(userName, host, port);
		session.setPassword(passWord);
		Properties sshConfig = new Properties();
		sshConfig.put("StrictHostKeyChecking", "no");
		session.setConfig("userauth.gssapi-with-mic", "no");

		session.setConfig(sshConfig);

		session.connect();

		ChannelSftp ftp = (ChannelSftp) session.openChannel("sftp");
		ftp.connect();

		checkDirsIsExsit(ftp, dst);

		File dir = new File(src);

		String[] list = dir.list();

		for (String str : list) {

			try {
				
				ftp.put(dir.getAbsolutePath()+"/"+str, dst + "/"+str);
				System.out.println("推送:"+str+"完畢!!");
			} catch (SftpException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		ftp.disconnect();
		session.disconnect();
	}

推送程序至此完畢!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章