4

ローカルマシンからサーバー/別のマシンにコンテンツをアップロードする単純なJavaコードを開発しようとしています。以下のコードを使用しました

import sun.net.ftp.*;
import java.io.*;

public class SftpUpload {
 public static void main(String args[]) {
   String hostname = "some.remote.machine"; //Remote FTP server: Change this
   String username = "user"; //Remote user name: Change this
   String password = "start123"; //Remote user password: Change this
   String upfile = args[0]; //File to upload passed on command line
   String remdir = "/home/user"; //Remote directory for file upload
   FtpClient ftp = new FtpClient();
   try {
      ftp.openServer(hostname); //Connect to FTP server
      ftp.login(username, password); //Login
      ftp.binary(); //Set to binary mode transfer
      ftp.cd(remdir); //Change to remote directory
      File file = new File(upfile);
      OutputStream out = ftp.put(file.getName()); //Start upload
      InputStream in = new FileInputStream(file);
      byte c[] = new byte[4096];
      int read = 0;
      while ((read = in.read(c)) != -1 ) {
         out.write(c, 0, read);
      } //Upload finished
      in.close();
      out.close();
      ftp.closeServer(); //Close connection
   } catch (Exception e) {
      System.out.println("Error: " + e.getMessage());
   }
 }
}

しかし、11行目に「タイプFtpClientをインスタンス化できません」というエラーが表示されています。修正方法を教えてください。

4

3 に答える 3

2

sun.net.ftp.FtpClient は抽象クラスであるため、インスタンス化できません。

sun.x パッケージで遊ぶ代わりに、Apache Commons Net を使用することをお勧めします。FTP クライアントの例は、ここから見つけることができます。

于 2012-07-31T11:37:02.900 に答える
2

Sun クラスを使用する場合は、このクラスの JavaDoc に従ってを使用してください。FtpClient.create()

于 2012-07-31T11:37:54.710 に答える
0

私のマシンがFTP接続を許可しないネットワークに接続されているため、例外を解決しました。プライベートドングルで試したところ、機能しました。

于 2012-08-02T10:16:04.420 に答える