リストの作成と表示
リスト作成処理
取得したリストは、ListingオブジェクトのFormatプロパティを使って、リストの形式(UNIXなのかDosなのか、それとも不明の形式なのか)をチェックします。そして、不明な形式以外であれば、For...Eachステートメントを使ってファイルを1つずつ取り出し、ListBoxに組み込みます。
その際、ListEntryオブジェクトのTypeプロパティを参照し、ファイルのタイプがディレクトリかどうかをチェックします。これは、「EntryType列挙体」のメンバ「Directory」と比較します。ファイルがディレクトリであれば、リストの先頭に<Dir>という文字を付け、そうでなければそのままNameプロパティの値をリストに組み込みます。
すべてのファイル名を取り出したら、FtpコントロールのCloseメソッドを実行し、FTPサーバとの接続を閉じます。
If files.Format <> ListingFormat.Unknown Then
' ListEntry オブジェクトを繰り返します。
Dim le As ListEntry
For Each le In files
' ファイルのパスと名前を表示します。
If le.Type = EntryType.Directory Then
ListBox1.Items.Add("<Dir>" & le.Name)
Else
ListBox1.Items.Add(" " & le.Name)
End If
Next
Else
' 不明なフォーマット
MessageBox.Show("不明なフォーマットです。")
End If
Ftp1.Close()
End Sub
if (files.Format != ListingFormat.Unknown)
{
// ListEntryオブジェクトを取り出す
foreach (ListEntry le in files)
{
// ファイル名を表示
if (le.Type == EntryType.Directory)
{
listBox1.Items.Add("<Dir>" + le.Name);
}
else
{
listBox1.Items.Add(" " + le.Name);
}
}
}
else
{
// 不明なフォーマットの場合
MessageBox.Show("不明なフォーマットです。");
}
ftp1.Close();
}
| メンバ | 解説 |
|---|---|
| File | ListEntry.Nameにファイル名が格納されていることを示します |
| Directory | ListEntry.Nameにディレクトリ名が格納されていることを示します |
| Link | ListEntryにリンクが格納されていることを示します |
| Unknown | ListEntryを解析できなかったことを示します |
リスト選択時の情報表示処理
最後にリストのファイル名をクリックした際、ファイルサイズ、更新日時、アクセス権の情報をラベルに表示するようにします。
まず、選択されたリスト項目の位置を取得し、その値を使ってListingオブジェクトにアクセスします。Listingオブジェクト内のListEntryオブジェクトの位置とListBoxのリストの位置は同じなので、選択されたリスト位置のListEntryオブジェクトの各プロパティを参照して情報を取得します。
| プロパティ | 内容 |
|---|---|
| Name | ファイル名 |
| Size | ファイルサイズ |
| TimeStamp | 更新日時 |
| Permissions | アクセス権 |
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged Dim pos As Integer pos = ListBox1.SelectedIndex Label5.Text = files(pos).Name & " : " & _ files(pos).Size & "バイト" & " : " & _ files(pos).TimeStamp & " : " & _ files(pos).Permissions End Sub
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int pos;
pos = listBox1.SelectedIndex;
label5.Text = files[pos].Name + " : " +
files[pos].Size + "バイト" + " : " +
files[pos].TimeStamp + " : " +
files[pos].Permissions;
}
まとめ
とても簡単にFTPサーバを操作できるFtpコントロールですが、まずは手始めにサーバからファイルのリスト一覧を取得する処理を作成してみました。
今回は、サンプルプログラムの動作を考慮し、サーバアドレスやユーザー名、パスワードをテキストボックスで入力するようにしましたが、常にアクセスするサーバが決まっていれば、あらかじめプロパティウィンドウでこれらのプロパティを設定しておくことで、入力の手間を省くことができると思います。サーバに対してコマンドを実行することもできるので、いろいろな処理をフォームから行うことも可能です。

