C#を始めよう|FTPサーバーに接続してファイル一覧を取得

C#を始めよう|FTPサーバーに接続してファイル一覧を取得

C#

サーバーOSが何でも簡単にファイル一覧が取得できます。

FTPサーバーのファイル一覧を取得するコード

void    GetFileList()
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://FTPサーバー名/フォルダ名/");
    request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

    request.Credentials = new NetworkCredential ("FTPサーバーログインID","FTPサーバーログインパスワード");

    Stream responseStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(responseStream);

    Console.WriteLine(reader.ReadToEnd);          

    reader.Close();
    response.Close();
}

コンソールにフォルダ内のファイル一覧が表示されます。

ストリームリーダーを使っているので1行、ファイル単位で取得することも可能です。

FTPサーバーのファイル一覧を1行単位で取得

void    GetFileList()
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://FTPサーバー名/フォルダ名/");
    request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

    request.Credentials = new NetworkCredential ("FTPサーバーログインID","FTPサーバーログインパスワード");


    Stream responseStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(responseStream);
  
    while(  reader.Peek()   >=  0   )
    {
        string  FileName;

        Console.WriteLine(reader.ReadLine());
    }
    reader.Close();
    response.Close();
}

コンソールにファイル一覧が表示されるのは先ほどと同様ですが、ファイル単位で取得して表示しています。

では、これをアレンジしてファイル単位で更新日時を取得します。

FTPサーバーからファイル一覧を取得してその更新日時を取得

void    GetNameTimestamp()
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://FTPサーバー名/フォルダ名/");
    request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

    request.Credentials = new NetworkCredential ("FTPサーバーログインID","FTPサーバーログインパスワード");

    FtpWebResponse response = (FtpWebResponse)request.GetResponse();

    Stream responseStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(responseStream);
  
    while(  reader.Peek()   >=  0   )
    {
        string  FileName    =   reader.ReadLine().Substring(55);
        FtpWebRequest request0 = (FtpWebRequest)WebRequest.Create ("ftp://FTPサーバー名/フォルダ名/ファイル名");
        request0.Method = WebRequestMethods.Ftp.GetDateTimestamp;
        request0.Credentials = new NetworkCredential ("FTPサーバーログインID","FTPサーバーログインパスワード");
        FtpWebResponse response0 = (FtpWebResponse)request0.GetResponse ();
        string  TimeStamp   =   response0.LastModified.ToString();
        Console.WriteLine("filename={0} timestamp={1}",FileName, TimeStamp);
        response0.Close();
    }
    reader.Close();
    response.Close();
}

FTPサーバーに存在するフォルダ内のファイル名とそのファイルの更新日をコンソールに表示します。

利用方法

多少の工夫は必要ですが、サーバーに存在する最新ファイルをダウンロードしたり、GUIを作り込んでFTPソフトを作ることも可能です。

コメント

タイトルとURLをコピーしました