サーバー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ソフトを作ることも可能です。
コメント