###前提・実現したいこと
Javaからサーバへの sftp送受信をしたいのですが、
どのようなプログラムを作るのかわかりません。
試したのですが、このようなエラーがでます
※補足
sshの設定もしています。
サンプルプログラムなど上げて頂いたら、嬉しいです。
###エラーメッセージ
org.apache.commons.net.MalformedServerReplyException: Could not parse response code.
Server Reply: SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:337)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294)
at org.apache.commons.net.ftp.FTP.connectAction(FTP.java:400)
at org.apache.commons.net.ftp.FTPClient.connectAction(FTPClient.java:924)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:183)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:203)
at FtpClientHelper$FTPClass.sendFile(FtpClientHelper.java:48)
at FtpClientHelper.test(FtpClientHelper.java:27)
at FtpClientHelper.main(FtpClientHelper.java:19)
Java
1 2 3import java.io.FileInputStream; 4import java.io.FileOutputStream; 5import java.io.IOException; 6import java.io.InputStream; 7import java.io.OutputStream; 8 9import org.apache.commons.net.ftp.*; 10 11 12public class FtpClientHelper { 13 private static final int FTP_PORT = ポート番号; 14 private static final String LOCALHOST = "IPアドレス"; 15 private static final String USER = "ID" ; 16 private static final String PASSWORD = "パスワード" ; 17 18 public static void main(String args[]){ 19 test(); 20 } 21 22 23 public static void test() { 24 try { 25 //ファイルアップロード 26 FileInputStream fis = new FileInputStream("C:\\Users\\ユーザフォルダ\\Desktop\\新しいテキスト ドキュメント.txt"); 27 FTPClass.sendFile("remoteFilename", fis); 28 29 //ファイルダウンロード 30 //FileOutputStream fos = new FileOutputStream("downloadfile.txt"); 31 //FTPClass.retrieveFile("/data/downloadfile", fos); 32 33 } catch (Exception e) { 34 e.printStackTrace(); 35 } 36 } 37 38 39 static class FTPClass { 40 41 42 //ファイルアップロード 43 public static void sendFile (String remoteFilename, InputStream is ) throws Exception { 44 FTPClient ftpclient = new FTPClient(); 45 46 try { 47 //指定するホスト、ポートに接続します 48 ftpclient.connect(LOCALHOST, FTP_PORT); 49 // System.out.println("とおった"); 50 51 // コネクト 52 if (!FTPReply.isPositiveCompletion(ftpclient.getReplyCode())) { 53 Exception ee = new Exception("Can't Connect to :" + LOCALHOST); 54 throw ee; 55 } 56 57 //ログイン 58 if (ftpclient.login(USER, PASSWORD) == false) { 59 Exception ee = new Exception("Invalid user/password"); 60 throw ee; 61 } 62 63 //ファイル転送モード設定 64 ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE); 65 66 //ファイル転送 67 ftpclient.storeFile(remoteFilename, is); 68 69 } catch (IOException e) { 70 throw e; 71 } finally { 72 try { 73 ftpclient.disconnect(); //接続解除 74 } catch (IOException e) { 75 } 76 } 77 78 } 79 80 81 82 //ファイルダウンロード 83 public static void retrieveFile(String remoteFilename, OutputStream os) throws Exception { 84 FTPClient ftpclient = new FTPClient(); 85 86 try { 87 //指定するホスト、ポートに接続します 88 ftpclient.connect(LOCALHOST, FTP_PORT); 89 90 // コネクト 91 if (!FTPReply.isPositiveCompletion(ftpclient.getReplyCode())) { 92 Exception ee = new Exception("Can't Connect to :" + LOCALHOST); 93 throw ee; 94 } 95 96 //ログイン 97 if (ftpclient.login(USER, PASSWORD) == false) { 98 Exception ee = new Exception("Invalid user/password"); 99 throw ee; 100 } 101 102 //ファイル転送モード設定 103 ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE); 104 105 // ファイル受信 106 ftpclient.retrieveFile(remoteFilename, os); 107 108 } catch (IOException e) { 109 throw e; 110 } finally { 111 try { 112 ftpclient.disconnect(); //接続解除 113 } catch (IOException e) { 114 } 115 } 116 } 117 118 119 } 120} 121
###補足情報(言語/FW/ツール等のバージョンなど)
Eclipse Luna GUI
Ubuntu 2.0
Winscp