.NET FrameWork を使用するとFTPでのファイル ダウンロード/アップロード などは非常に手軽に行うことができます。
詳細なFTPコマンドを使用する場合は FtpWebRequest / FtpWebResponse などを使用しますが、手軽にダウンロードやアップロードをする場合は WebClient がお勧めです。
using (WebClient wc = new WebClient()) { try { // ログインユーザー名とパスワードを指定 wc.Credentials = new NetworkCredential("username", "password"); // FTPサーバーからダウンロードする wc.DownloadFile("ftp://192.168.1.1/hoge/foo.txt", @"C:\foo.txt"); } catch (WebException ex) { Console.WriteLine(ex); } }
using (WebClient wc = new WebClient()) { try { // ログインユーザー名とパスワードを指定 wc.Credentials = new NetworkCredential("username", "password"); // FTPサーバーへアップロードする wc.UploadFile("ftp://192.168.1.1/hoge/foo.txt", @"C:\foo.txt"); } catch (WebException ex) { Console.WriteLine(ex); } }
FFFTPなどのソフトでは接続できるのに、上記のコードで「リモート サーバーがエラーを返しました: (550) ファイルが使用できません (例: ファイルが見つからない、ファイルへのアクセスがない)」が発生する場合があります。
これはアドレスの後のスラッシュを2つにすることで接続できるようになる場合があります。
ex. ftp://192.168.1.1//hoge/foo.txt
この現象はURIが相対URIで処理されていることと、ログイン時の初期ディレクトリの設定により発生しています。詳しくは下記のページを参照ください。
FtpWebRequest クラス