Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

FTPファイル転送機能を持った.NETアプリケーションを作る

PowerTools Secure FTP 2.0JのFTPコントロールを使ったFTPアプリケーションの作成

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/05/28 14:30
目次

リストの取得

 FTPサーバからファイルリストを同期通信で取得するには、 まずはじめにServer、Username、Passwordの各プロパティを設定します。 これにより、自動的なサーバーログインが可能になります。次にListメソッドを実行します。 このメソッドは、サーバから指定したディレクトリのファイルリストを、Listingコレクションオブジェクトとして返してきます。

 ListingコレクションオブジェクトはListEntryオブジェクトの集合体で、ListEntryオブジェクトは各ファイルに関する情報(ファイル名、サイズ、更新日時、アクセス権など)を持ったオブジェクトです。従って、ファイルのリストを取得するには、以下の順番でFtpコントロールの各メソッドを実行します。

  1. Server、Username、Passwordの各プロパティを設定する
  2. ファイルを取得するディレクトリをカレントディレクトリに切り替えるコマンドを送信する
  3. Listメソッドを実行し、ファイルリストを取得する
  4. 取得したファイル情報を表示する
  5. 接続を閉じる

 これらの処理をボタン「Button1」のClickイベントハンドラに作成します。

準備とサーバ接続処理

 最初に、サーバ接続処理を作成します。

 まず、Listメソッドの戻り値を受け取る変数を、モジュールレベルで宣言します。そして、Server、Username、Passwordの各プロパティをTextBoxから取得して設定する式を作成します。

 また、リストを取得するディレクトリ名を受け取る式を作成します。TextBoxが空白であれば、FTPサーバのルートディレクトリをカレントディレクトリとして、ファイルリストを取得します。

Visual Basic
Imports Dart.PowerTCP.SecureFtp

Public Class Form1
    Private files As Listing
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dirname As String = ""

        ListBox1.Items.Clear()

        Ftp1.Server = TextBox1.Text
        Ftp1.Username = TextBox2.Text
        Ftp1.Password = TextBox3.Text

        dirname = TextBox4.Text
C#
using Dart.PowerTCP.SecureFtp;
namespace myftp_cs
{
    public partial class Form1 : Form
    {
        private Listing files;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string dirname = "";

            listBox1.Items.Clear();

            ftp1.Server = textBox1.Text;
            ftp1.Username = textBox2.Text;
            ftp1.Password = textBox3.Text;

            dirname = textBox4.Text;

カレントディレクトリの変更とリストの取得

 続いて、ファイルリストを取得するディレクトリを指定している場合は、ディレクトリ変更のコマンドをFTPサーバに送信する処理を行います。この処理は、FtpコントロールのInvokeメソッドを使用します。引数は2つで、最初の引数にコマンド名をFtpCommand列挙体のメンバで指定します。

 ディレクトリの変更はメンバ「ChangeDir」を指定します。2番目の引数には、コマンドと一緒に送信するパラメータを設定します。ここでは、変更するディレクトリ名(フォルダ名)です。

 メソッドが実行されると、カレントディレクトリが指定したディレクトリに変更されます。また、このメソッドが実行される直前に、自動的にサーバへのログイン処理が実行されます。TextBoxにディレクトリの指定がなければInvokeメソッドは実行されず、カレントディレクトリは変更されません。

 そして、Listメソッドを実行します。取得したファイルリストをListingオブジェクトで返してきますので、変数に格納します。また、ListingオブジェクトのCountプロパティで取得したファイル数を把握できますので、これをステータスバーで表示します。

Visual Basic
If dirname <> "" Then
    Ftp1.Invoke(FtpCommand.ChangeDir, dirname)
End If

files = Ftp1.List("*", True)

ToolStripStatusLabel1.Text = "取得ファイル数:" & files.Count
C#
if (dirname != "")
{
    ftp1.Invoke(FtpCommand.ChangeDir, dirname);
}

files = ftp1.List("*", true);

toolStripStatusLabel1.Text = "取得ファイル数:" + files.Count;
FtpCommand列挙体のメンバ
メンバ 解説
Account 認証情報を提供するために「ACCT」を送信します
ChangeDir デフォルトの作業ディレクトリを変更するために「CWD <pathname>」を送信します
ChangeDirUp デフォルトの作業ディレクトリを1つ上のレベルに移動するために「CDUP」を送信します
Delete ファイルを削除するために「DELE <filename>」を送信します
Help ヘルプ情報を取得するために「HELP」を送信します
MakeDir ディレクトリを作成するために「MKD <pathname>」を送信します
NoOp 接続をテストするために「NOOP」を送信します
Null 修飾子のみが送信されるので、独自のコマンドを送信できます
Password 認証情報を提供するために「PASS」を送信します
PrintDir 現在の作業ディレクトリを確認するために「PWD」を送信します
Quit 接続を終了するために「QUIT」を送信します
Reinitialize セッションとログインを初期化するために「REIN」を送信します
RemoveDir ディレクトリを削除するために「RMD <pathname>」を送信します
RenameFrom 名前を変更するファイルを指定するために「RNFR <pathname>」を送信します
RenameTo ファイルの新しい名前を指定するために「RNTO <pathname>」を送信します
SiteParameters 特別なサービスにアクセスするために「SITE」を送信します
Size ファイルのサイズを取得するために「SIZE <filename>」を送信します
Status ステータス情報を取得するために「STAT」を送信します
Structure 特別なパターンのレコードとページ設定を操作するために「STRU <F|R|P>」を送信します
StructureMount ログアウトせずに別のファイルシステムのデータ構造をマウントするために「SMNT <structure>」を送信します
System システム情報を取得するために「SYST」を送信します
Username 認証情報を提供するために「USER」を送信します

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

    8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

バックナンバー

連載:ComponentZine(Secure FTP)
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5