2013-02-12 96 views
12

SFTP経由でJavaでファイルを転送する方法はありますか? SFTPクライアント用のサンプルコードが必要です。 アプリケーションにSFTPサーバーを埋め込み、クライアントがアプリケーションにファイルを送信できるようにします。SFTPを使ってJavaでファイルを転送する方法は?

PS:これはSFTPクライアントのために尋ねられました。そして、この質問は、他の2つの質問の重複ではありません。

答えて

46

このコードを試してください。

public void send (String fileName) { 
     String SFTPHOST = "host:IP"; 
     int SFTPPORT = 22; 
     String SFTPUSER = "username"; 
     String SFTPPASS = "password"; 
     String SFTPWORKINGDIR = "file/to/transfer"; 

     Session session = null; 
     Channel channel = null; 
     ChannelSftp channelSftp = null; 
     System.out.println("preparing the host information for sftp."); 
     try { 
      JSch jsch = new JSch(); 
      session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT); 
      session.setPassword(SFTPPASS); 
      java.util.Properties config = new java.util.Properties(); 
      config.put("StrictHostKeyChecking", "no"); 
      session.setConfig(config); 
      session.connect(); 
      System.out.println("Host connected."); 
      channel = session.openChannel("sftp"); 
      channel.connect(); 
      System.out.println("sftp channel opened and connected."); 
      channelSftp = (ChannelSftp) channel; 
      channelSftp.cd(SFTPWORKINGDIR); 
      File f = new File(fileName); 
      channelSftp.put(new FileInputStream(f), f.getName()); 
      log.info("File transfered successfully to host."); 
     } catch (Exception ex) { 
      System.out.println("Exception found while tranfer the response."); 
     } 
     finally{ 

      channelSftp.exit(); 
      System.out.println("sftp Channel exited."); 
      channel.disconnect(); 
      System.out.println("Channel disconnected."); 
      session.disconnect(); 
      System.out.println("Host Session disconnected."); 
     } 
    } 
+0

私の宛先ディレクトリにはsudoのアクセス許可が必要です。どうすればいいですか? @Dhinakar – Ajak6

+0

作業ディレクトリがわからない場合はどうすればいいですか?私はファイルパスだけを知っていますか?どのようにcdコマンドを処理するには? –

+0

@ Ajak6あなたはsudo権限を持つための解決策を見つけましたか? – Dish

関連する問題