sftp

转载 2011年01月09日 18:34:00


package net.xwolf.ultility;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

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; public class FtpImpl{
   
   
private String host = "127.0.0.1";
   
private String username="MingMac";
   
private String password="×××";
   
private int port = 22;
   
private ChannelSftp sftp = null;
   
private String localPath = "/Users/MingMac/Documents";
   
private String remotePath = "/Users/MingMac/MyDocuments";
   
private String fileListPath = "/Users/MingMac/Documents/Java/workspace/MyTools/conf/file.txt";
   
private final String seperator = "/";
   
   
/**
     * connect server via sftp
    
*/
   
public void connect() {
       
try {
           
if(sftp != null){
                System.out.println(
"sftp is not null");
            }
            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) {
            e.printStackTrace();
        }
    }
   
/**
     * Disconnect with server
    
*/
   
public void disconnect() {
       
if(this.sftp != null){
           
if(this.sftp.isConnected()){
               
this.sftp.disconnect();
            }
else if(this.sftp.isClosed()){
                System.out.println(
"sftp is closed already");
            }
        }

    }

   
public void download() {
       
// TODO Auto-generated method stub
       

    }
   
   
   
private 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();
        }
    }
   
   
/**
     * upload all the files to the server
    
*/
   
public void upload() {
        List
<String> fileList = this.getFileEntryList(fileListPath);
       
try {
           
if(fileList != null){
               
for (String filepath : fileList) {
                    String localFile
= this.localPath + this.seperator+ filepath;
                    File file
= new File(localFile);
                   
                   
if(file.isFile()){
                        System.out.println(
"localFile : " + file.getAbsolutePath());
                        String remoteFile
= this.remotePath + this.seperator + filepath;
                        System.out.println(
"remotePath:" + remoteFile);
                        File rfile
= new File(remoteFile);
                        String rpath
= rfile.getParent();
                       
try {
                            createDir(rpath, sftp);
                        }
catch (Exception e) {
                            System.out.println(
"*******create path failed" + rpath);
                        }

                       
this.sftp.put(new FileInputStream(file), file.getName());
                        System.out.println(
"=========upload down for " + localFile);
                    }
                }
            }
        }
catch (FileNotFoundException e) {
           
// TODO Auto-generated catch block
            e.printStackTrace();
        }
catch (SftpException e) {
           
// TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }
   
/**
     * create Directory
     *
@param filepath
     *
@param sftp
    
*/
   
private void createDir(String filepath, ChannelSftp sftp){
       
boolean bcreated = false;
       
boolean bparent = false;
        File file
= new File(filepath);
        String ppath
= file.getParent();
       
try {
           
this.sftp.cd(ppath);
            bparent
= true;
        }
catch (SftpException e1) {
            bparent
= false;
        }
       
try {
           
if(bparent){
               
try {
                   
this.sftp.cd(filepath);
                    bcreated
= true;
                }
catch (Exception e) {
                    bcreated
= false;
                }
               
if(!bcreated){
                   
this.sftp.mkdir(filepath);
                    bcreated
= true;
                }
               
return;
            }
else{
                createDir(ppath,sftp);
               
this.sftp.cd(ppath);
               
this.sftp.mkdir(filepath);
            }
        }
catch (SftpException e) {
            System.out.println(
"mkdir failed :" + filepath);
            e.printStackTrace();
        }
       
       
try {
           
this.sftp.cd(filepath);
        }
catch (SftpException e) {
            e.printStackTrace();
            System.out.println(
"can not cd into :" + filepath);
        }
       
    }
   
/**
     * get all the files need to be upload or download
     *
@param file
     *
@return
    
*/
   
private List<String> getFileEntryList(String file){
        ArrayList
<String> fileList = new ArrayList<String>();
        InputStream in
= null;
       
try {
           
            in
= new FileInputStream(file);
            InputStreamReader inreader
= new InputStreamReader(in);
           
            LineNumberReader linreader
= new LineNumberReader(inreader);
            String filepath
= linreader.readLine();
           
while(filepath != null){
                fileList.add(filepath);
                filepath
= linreader.readLine();
            }
            in.close();
        }
catch (FileNotFoundException e) {
           
// TODO Auto-generated catch block
            e.printStackTrace();
        }
catch (IOException e) {
           
// TODO Auto-generated catch block
            e.printStackTrace();
        }
finally{
           
if(in != null){
                in
= null;
            }
        }

       
return fileList;
    }

   
/**
     *
@return the host
    
*/
   
public String getHost() {
       
return host;
    }

   
/**
     *
@param host the host to set
    
*/
   
public void setHost(String host) {
       
this.host = host;
    }

   
/**
     *
@return the username
    
*/
   
public String getUsername() {
       
return username;
    }

   
/**
     *
@param username the username to set
    
*/
   
public void setUsername(String username) {
       
this.username = username;
    }

   
/**
     *
@return the password
    
*/
   
public String getPassword() {
       
return password;
    }

   
/**
     *
@param password the password to set
    
*/
   
public void setPassword(String password) {
       
this.password = password;
    }

   
/**
     *
@return the port
    
*/
   
public int getPort() {
       
return port;
    }

   
/**
     *
@param port the port to set
    
*/
   
public void setPort(int port) {
       
this.port = port;
    }

   
/**
     *
@return the sftp
    
*/
   
public ChannelSftp getSftp() {
       
return sftp;
    }

   
/**
     *
@param sftp the sftp to set
    
*/
   
public void setSftp(ChannelSftp sftp) {
       
this.sftp = sftp;
    }

   
/**
     *
@return the localPath
    
*/
   
public String getLocalPath() {
       
return localPath;
    }

   
/**
     *
@param localPath the localPath to set
    
*/
   
public void setLocalPath(String localPath) {
       
this.localPath = localPath;
    }

   
/**
     *
@return the remotePath
    
*/
   
public String getRemotePath() {
       
return remotePath;
    }

   
/**
     *
@param remotePath the remotePath to set
    
*/
   
public void setRemotePath(String remotePath) {
       
this.remotePath = remotePath;
    }

   
/**
     *
@return the fileListPath
    
*/
   
public String getFileListPath() {
       
return fileListPath;
    }

   
/**
     *
@param fileListPath the fileListPath to set
    
*/
   
public void setFileListPath(String fileListPath) {
       
this.fileListPath = fileListPath;
    }
   
   
public static void main(String[] args) {
       
// TODO Auto-generated method stub
        FtpImpl ftp= new FtpImpl();
        ftp.connect();
        ftp.upload();
        ftp.disconnect();
        System.exit(
0);
    }


}

相关文章推荐

Windows + Python 环境下Open CV 安装

Window Python 环境下Open CV 安装 如题,环境简介:Windows 64bit, Python 2.7, 安装的是 opencv2.4.13.3: http://openc...

用自己的数据训练和测试“caffenet”

本次实验本来参考examples/imagenet下的readme.txt进行,但因为数据集过于庞大,所以模拟学习,参考薛开宇的学习方式,模仿搭建自己的数据库。 首先在caffe/data下新建文件...

红帽6Linux搭建SFTP服务器

  • 2016-08-24 10:47
  • 552KB
  • 下载

Linux下配置SFTP服务器

最近在做一个微信支付水电费的项目,是与兴业银行合作的项目,按照银行的要求要配置一个SFTP服务器,上传每天缴费的对账单到SFTP服务器里面,经过一段时间的摸索,终于配置成功了,跟大家分享一下,配置过程...

sharpSSH c#实现SFTP的东东

  • 2017-09-28 22:57
  • 524KB
  • 下载

sftp的使用

  • 2014-11-19 13:38
  • 121KB
  • 下载

Python paramiko模块之SSH SFTP

使用SSH 的exec_command() 远端执行命令很方便,但是对于切换用户,切换目录,ssh到另外的单板,或者需要一定时间响应的操作等就比较难以实现了。 比如: ssh.exec_comma...

xshell4用于sftp

  • 2014-10-31 08:49
  • 28.44MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)