読者です 読者をやめる 読者になる 読者になる

色々でべろっぷ

WordPress、サーバー構築、プログラム等のメモ

JavaでFTPを使う(実践)

package net.shina_ken.test.ftp;
 
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
 
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
 
public class FtpClient {
 private static final int FTP_PORT = 21;
 //FFFTPでいう「ホスト名(アドレス)」の部分
 private static final String LOCALHOST = "shina-ken.net";
 private static final String USER = "ftponly";
 private static final String PASSWORD = "ftponly";
 
 public static void main(String[] args){
  try {
   //FTPサーバのほうがアップロード禁止なので
 
   //ファイルアップロード
   //FileInputStream fis = new FileInputStream("c:\testftp.txt");
   //FTPClass.sendFile("remoteFilename", fis);
 
   //ファイルダウンロード
   FileOutputStream fos = new FileOutputStream("downloadfile.txt");
   FTPClass.retrieveFile("/test.txt", fos);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 static class FTPClass   {
  //ファイルアップロード
  public static void sendFile (String remoteFilename, InputStream is ) throws Exception {
   FTPClient ftpclient = new FTPClient();
 
   try {
    //指定するホスト、ポートに接続します
    ftpclient.connect(LOCALHOST, FTP_PORT);
 
    // コネクト
    if (!FTPReply.isPositiveCompletion(ftpclient.getReplyCode())) {
     Exception ee = new Exception("Can't Connect to :" + LOCALHOST);
     throw ee;
    }
 
    //ログイン
    if (ftpclient.login(USER, PASSWORD) == false) {
     Exception ee = new Exception("Invalid user/password");
     throw ee;
    }
 
    //ファイル転送モード設定
    ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
 
    //ファイル転送
    ftpclient.storeFile(remoteFilename, is);
 
   } catch (IOException e) {
    throw e;
   } finally {
    try {
     ftpclient.disconnect(); //接続解除
    } catch (IOException e) {
    }
   }
 
  }
 
  //ファイルダウンロード
  public static void retrieveFile(String remoteFilename, OutputStream os) throws Exception {
   FTPClient ftpclient = new FTPClient();
 
   try {
    //指定するホスト、ポートに接続します
    ftpclient.connect(LOCALHOST, FTP_PORT);
 
    // コネクト
    if (!FTPReply.isPositiveCompletion(ftpclient.getReplyCode())) {
     Exception ee = new Exception("Can't Connect to :" + LOCALHOST);
     throw ee;
    }
 
    //ログイン
    if (ftpclient.login(USER, PASSWORD) == false) {
     Exception ee = new Exception("Invalid user/password");
     throw ee;
    }
 
    //ファイル転送モード設定
    ftpclient.setFileType(FTPClient.BINARY_FILE_TYPE);
 
    // ファイル受信
    ftpclient.retrieveFile(remoteFilename, os);
 
   } catch (IOException e) {
    throw e;
   } finally {
    try {
     ftpclient.disconnect(); //接続解除
    } catch (IOException e) {
    }
   }
  }
 }
}


※この部分に必要な4つの情報を入れておくだけ
private static final int FTP_PORT = 21;
//FFFTPでいう「ホスト名(アドレス)」の部分
private static final String LOCALHOST = “shina-ken.net”;
private static final String USER = “ftponly”;
private static final String PASSWORD = “ftponly”;