Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

サーバのファイルを直接読み書きする.NETアプリケーションを作る

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

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

書き込みのためにデータ接続に同期アクセスする処理

 今度は、書き込みのためにデータ接続に同期アクセスする処理を作成します。これは、「書き込み」ボタンのClickイベントハンドラに作成します。

 まず、ログイン用の3つのTextBoxコントロールの値を、

 それぞれ「Server」「Username」「Password」という3つのプロパティに格納する処理を再度行います。これは、ファイルの読み込みで一度ftpサーバとの接続を切っているので、再接続するために使用します。

 そして、読み込んだデータが表示されているTextBoxコントロールのデータを変数に格納し、追加の文字列が書き込まれているTextBoxコントロールの内容を加えます。

Visual Basic
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Ftp1.Server = TextBox1.Text
    Ftp1.Username = TextBox2.Text
    Ftp1.Password = TextBox3.Text

    'データの書き込み
    Dim wstream As Dart.PowerTCP.SecureFtp.SegmentedStream
    Dim msg As String

    msg = Me.TextBox4.Text & System.Environment.NewLine
    msg += Me.TextBox5.Text
C#
private void button2_Click(object sender, EventArgs e)
{
    ftp1.Server = textBox1.Text;
    ftp1.Username = textBox2.Text;
    ftp1.Password = textBox3.Text;

    //データの書き込み
    Dart.PowerTCP.SecureFtp.SegmentedStream wstream; 
    string msg; 

    msg = textBox4.Text + System.Environment.NewLine;
    msg += textBox5.Text;

 次に、「Put」というメソッドでファイルへのストリームを作成します。このメソッドも、ファイル転送に使用したメソッドですが、引数を変えるとファイルへのストリームを作成するメソッドになります。

 引数はGetメソッドと同様2つで、第一のパラメータのremoteFileName は、データ接続を確立するサーバ上のファイルを指定し、第二パラメ-タの restartMarker は、このファイルの書き込みを開始する位置を指定します。ここでは、ファイル「mydialy.txt」を指定し、書き込み開始位置はファイルの先頭を指定します。メソッドの実行が成功すると、メソッドはSegmentedStreamオブジェクトを作成して返してきますので、同じデータ型の変数に格納しておきます。これで、Getメソッドと同様ファイルへのアクセスがストリームという形で形成されますが、この場合は書き込みという形でストリームが形成されます。

 ストリームが開いたら、「Write」メソッドを実行します。このメソッドも、SegmentedStreamクラスのメンバで、オーバーロードになっておりデータの書き込みに際していろいろな機能を提供できるようになっています。今回は、最も単純な機能でストリームに文字列を書き込むメソッドを使用します。引数はなく、メソッドを実行するだけです。

 そして、データをファイルに書き出したら、一度ftpサーバとの接続を切り、再度ファイルを読み込むメソッド「read_data」を実行してファイル更新の内容をTextBoxコントロールに表示してできあがりです。

Visual Basic
    wstream = Ftp1.Put("mydialy.txt", 0)
    wstream.Write(msg)

    wstream.Close()

    Me.TextBox5.Text = ""

    read_data()

End Sub
C#
    wstream = ftp1.Put("mydialy.txt", 0);
    wstream.Write(msg);

    wstream.Close();

    textBox5.Text = "";

    read_data();
}
Putメソッドのオーバーロード一覧
メソッド 解説
Put(String,String) 1つのファイルをサーバに同期保存します。
Put(Stream,String) ストリームをファイルとしてサーバ上に同期保存します。
Put(String,String,String,Boolean,Boolean) サーバに複数のファイルを同期送信します。
Put(String,Int64) データ接続への書き込みに使用できるストリームを同期取得します。
Writeメソッドのオーバーロード一覧
メソッド 解説
Write(Byte[],Byte[],Byte[],Int32,Int32) ストリームにデータを書き込むと同時に、バイトごとの検索/置換を実行します。
Write(Byte[],Byte[],Int32,Int32) 区切り文字に達するまでストリームにデータを書き込みます。
Write(Byte[],Int32,Int32) データをストリームに書き込みます。
Write(String) ストリームに文字列を書き込みます。
Write(Byte[]) Streamにバイトのシーケンスを書き込み、処理が完了した時点で終了します。EnhancedStreamから継承されます。

まとめ

 メソッドの実行だけで、ftpサーバにあるファイルを直接読み書きできるのは、開発する側にとっては負担が少なく開発コストを抑えることができるので、とても魅力的な機能でしょう。

 今回は、簡単なテキストファイルの読み書きを例にとりましたが、業務系アプリケーションの開発ではもっといろいろなケースのデータ処理に利用できると思います。

製品情報



  • ブックマーク
  • 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