zoukankan      html  css  js  c++  java
  • 通过代码链接ftp上传下载删除文件

    因为我的项目是Maven项目,首先要导入一个Maven库里的包:pom.xml

    <dependency>
                <groupId>com.jcraft</groupId>
                <artifactId>jsch</artifactId>
                <version>0.1.51</version>
     </dependency>

    下面是具体代码了:

    /*
    * Created on 2009-9-14
    * Copyright 2009 by www.xfok.net. All Rights Reserved
    *
    */

    package net.xfok.ftp;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.Properties;
    import java.util.Vector;

    import com.jcraft.jsch.Channel;
    import com.jcraft.jsch.ChannelSftp;
    import com.jcraft.jsch.JSch;
    import com.jcraft.jsch.Session;
    import com.jcraft.jsch.SftpException;

    /**
    * @author YangHua
    * 转载请注明出处:http://www.xfok.net/2009/10/124485.html
    */
    public class MySFTP {

    /**
    * 连接sftp服务器
    * @param host 主机
    * @param port 端口
    * @param username 用户名
    * @param password 密码
    * @return
    */
    public ChannelSftp connect(String host, int port, String username,
    String password) {
    ChannelSftp sftp = null;
    try {
    JSch jsch = new JSch();
    jsch.getSession(username, host, port);
    Session sshSession = jsch.getSession(username, host, port);
    System.out.println("Session created.");
    sshSession.setPassword(password);
    Properties sshConfig = new Properties();
    sshConfig.put("StrictHostKeyChecking", "no");
    sshSession.setConfig(sshConfig);
    sshSession.connect();
    System.out.println("Session connected.");
    System.out.println("Opening Channel.");
    Channel channel = sshSession.openChannel("sftp");
    channel.connect();
    sftp = (ChannelSftp) channel;
    System.out.println("Connected to " + host + ".");
    } catch (Exception e) {

    }
    return sftp;
    }

    /**
    * 上传文件
    * @param directory 上传的目录
    * @param uploadFile 要上传的文件
    * @param sftp
    */
    public void upload(String directory, String uploadFile, ChannelSftp sftp) {
    try {
    sftp.cd(directory);
    File file=new File(uploadFile);
    sftp.put(new FileInputStream(file), file.getName());
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    /**
    * 下载文件
    * @param directory 下载目录
    * @param downloadFile 下载的文件
    * @param saveFile 存在本地的路径
    * @param sftp
    */
    public void download(String directory, String downloadFile,String saveFile, ChannelSftp sftp) {
    try {
    sftp.cd(directory);
    File file=new File(saveFile);
    sftp.get(downloadFile, new FileOutputStream(file));
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    /**
    * 删除文件
    * @param directory 要删除文件所在目录
    * @param deleteFile 要删除的文件
    * @param sftp
    */
    public void delete(String directory, String deleteFile, ChannelSftp sftp) {
    try {
    sftp.cd(directory);
    sftp.rm(deleteFile);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    /**
    * 列出目录下的文件
    * @param directory 要列出的目录
    * @param sftp
    * @return
    * @throws SftpException
    */
    public Vector listFiles(String directory, ChannelSftp sftp) throws SftpException{
    return sftp.ls(directory);
    }

    public static void main(String[] args) {
    MySFTP sf = new MySFTP();
    String host = "192.168.0.1";
    int port = 22;
    String username = "root";
    String password = "root";
    String directory = "/home/httpd/test/";
    String uploadFile = "D:\tmp\upload.txt";
    String downloadFile = "upload.txt";
    String saveFile = "D:\tmp\download.txt";
    String deleteFile = "delete.txt";
    ChannelSftp sftp=sf.connect(host, port, username, password);
    sf.upload(directory, uploadFile, sftp);
    sf.download(directory, downloadFile, saveFile, sftp);
    sf.delete(directory, deleteFile, sftp);
    try{
    sftp.cd(directory);
    sftp.mkdir("ss");
    System.out.println("finished");
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    }

  • 相关阅读:
    棋盘型动态规划 之 CODE[VS] 1220 数字三角形
    棋盘型动态规划 之 CODE[VS] 1219 骑士游历 1997年
    棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组
    棋盘型动态规划 之 CODE[VS] 1010 过河卒 2002年NOIP全国联赛普及组
    [实验]自举?只不过是电容和二极管捣的乱
    [嵌入式]I2C协议指东
    [语法]C语言中二维数组做输入参数
    深入类方法。
    今天周六祝大家休息开心,我还在奋斗....
    我们一起来一把.....现在学习真的好累,一天下来脑袋要炸
  • 原文地址:https://www.cnblogs.com/huangwentian/p/6510059.html
Copyright © 2011-2022 走看看