import com. jcraft. jsch. * ;
import com. jcraft. jsch. ChannelSftp . LsEntry ; import java. io. File ;
import java. io. FileInputStream ;
import java. io. FileOutputStream ;
import java. io. IOException ;
import java. util. * ;
public class SftpFile { static Session sshSession = null ; public static ChannelSftp getConnectIP ( String host, String sOnlineSftpPort, String username, String password) { int port = 0 ; if ( ! ( "" . equals ( sOnlineSftpPort) ) && null != sOnlineSftpPort) { port = Integer . parseInt ( sOnlineSftpPort) ; } ChannelSftp sftp = null ; try { JSch jsch = new JSch ( ) ; jsch. getSession ( username, host, port) ; sshSession = jsch. getSession ( username, host, port) ; sshSession. setPassword ( password) ; Properties sshConfig = new Properties ( ) ; sshConfig. put ( "StrictHostKeyChecking" , "no" ) ; sshSession. setConfig ( sshConfig) ; sshSession. connect ( ) ; Channel channel = sshSession. openChannel ( "sftp" ) ; channel. connect ( ) ; sftp = ( ChannelSftp ) channel; } catch ( Exception e) { e. printStackTrace ( ) ; } return sftp; } public static void upload ( String directory, String uploadFile, ChannelSftp sftp) { FileInputStream io = null ; try { sftp. cd ( directory) ; File file = new File ( uploadFile) ; io = new FileInputStream ( file) ; sftp. put ( io, file. getName ( ) ) ; } catch ( Exception e) { e. printStackTrace ( ) ; } finally { if ( null != io) { try { io. close ( ) ; } catch ( IOException e) { e. printStackTrace ( ) ; } } if ( sftp. isConnected ( ) ) { sshSession. disconnect ( ) ; sftp. disconnect ( ) ; } } } static boolean deleteDirFiles ( String newsFile, ChannelSftp sftp) { try { sftp. cd ( newsFile) ; ListIterator a = sftp. ls ( newsFile) . listIterator ( ) ; while ( a. hasNext ( ) ) { LsEntry oj = ( LsEntry ) a. next ( ) ; SftpFile . delete ( newsFile, oj. getFilename ( ) , sftp) ; } } catch ( Exception e) { e. getMessage ( ) ; } finally { if ( sftp. isConnected ( ) ) { sshSession. disconnect ( ) ; sftp. disconnect ( ) ; } } return true ; } public static void upload ( String directory, String uploadFile, ChannelSftp sftp, String remoteFileName, boolean isRemote) { FileInputStream io = null ; try { boolean isExist = false ; try { SftpATTRS sftpATTRS = sftp. lstat ( directory) ; isExist = true ; isExist = sftpATTRS. isDir ( ) ; } catch ( Exception e) { if ( e. getMessage ( ) . toLowerCase ( ) . equals ( "no such file" ) ) { isExist = false ; } } if ( ! isExist) { boolean existDir = SftpFile . isExistDir ( directory, sftp) ; if ( ! existDir) { String pathArry[ ] = directory. split ( "/" ) ; StringBuffer Path = new StringBuffer ( "/" ) ; for ( String path : pathArry) { if ( path. equals ( "" ) ) { continue ; } Path . append ( path + "/" ) ; if ( ! SftpFile . isExistDir ( Path + "" , sftp) ) { sftp. mkdir ( Path . toString ( ) ) ; } sftp. cd ( Path . toString ( ) ) ; } } } sftp. cd ( directory) ; File file = new File ( uploadFile) ; io = new FileInputStream ( file) ; if ( isRemote) { sftp. put ( io, remoteFileName) ; } else { sftp. put ( io, file. getName ( ) ) ; } } catch ( Exception e) { e. printStackTrace ( ) ; } finally { if ( null != io) { try { io. close ( ) ; } catch ( IOException e) { e. printStackTrace ( ) ; } } if ( sftp. isConnected ( ) ) { sshSession. disconnect ( ) ; sftp. disconnect ( ) ; } } } public static boolean isExistDir ( String path, ChannelSftp sftp) { boolean isExist = false ; try { SftpATTRS sftpATTRS = sftp. lstat ( path) ; isExist = true ; return sftpATTRS. isDir ( ) ; } catch ( Exception e) { if ( e. getMessage ( ) . toLowerCase ( ) . equals ( "no such file" ) ) { isExist = false ; } } return isExist; } public static List < String > uploadZip ( String directory, String uploadFile, ChannelSftp sftp, List < String > filePath) { try { List < String > list = new ArrayList < > ( ) ; boolean existDir = SftpFile . isExistDir ( directory, sftp) ; if ( ! existDir) { sftp. mkdir ( directory) ; } sftp. cd ( directory) ; int i = 1 ; for ( String newPath : filePath) { FileInputStream io = null ; try { File file = new File ( uploadFile + newPath) ; io = new FileInputStream ( file) ; sftp. put ( io, newPath) ; io. close ( ) ; list. add ( newPath) ; i++ ; } catch ( Exception ex) { ex. printStackTrace ( ) ; } finally { if ( null != io) { try { io. close ( ) ; } catch ( IOException e) { e. printStackTrace ( ) ; } } } } return list; } catch ( SftpException e) { e. getMessage ( ) ; return null ; } finally { if ( sftp. isConnected ( ) ) { sshSession. disconnect ( ) ; sftp. disconnect ( ) ; } } } public static 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 ( ) ; } finally { if ( sftp. isConnected ( ) ) { sshSession. disconnect ( ) ; sftp. disconnect ( ) ; } } System . out. println ( "DOWNLOAD SUCCESS!" ) ; } public static List < String > check ( String directory, ChannelSftp sftp) { List < String > fileList = new ArrayList < > ( ) ; try { sftp. cd ( directory) ; ListIterator a = sftp. ls ( directory) . listIterator ( ) ; while ( a. hasNext ( ) ) { LsEntry oj = ( LsEntry ) a. next ( ) ; System . out. println ( oj. getFilename ( ) ) ; } } catch ( Exception e) { e. printStackTrace ( ) ; } finally { if ( sftp. isConnected ( ) ) { sshSession. disconnect ( ) ; sftp. disconnect ( ) ; } } return fileList; } public static void delete ( String directory, String deleteFile, ChannelSftp sftp) { try { sftp. cd ( directory) ; sftp. rm ( deleteFile) ; System . out. println ( "文件:" + deleteFile+ " 删除成功!" ) ; } catch ( Exception e) { e. printStackTrace ( ) ; } finally { if ( sftp. isConnected ( ) ) { sshSession. disconnect ( ) ; sftp. disconnect ( ) ; } } } public static void main ( String [ ] args) { ChannelSftp ftp = getConnectIP ( "10.0.0.131" , "22" , "root" , "123456" ) ;
deleteDirFiles ( "/mydata/picture" , ftp) ; }
}