Visual Stadio C# 2019にてプログラミングをしています。
https://dobon.net/vb/dotnet/internet/ftpwebrequest.html
FTPサーバーからファイルをダウンロードするために上記URLのサイトを参考にプログラムを組んでいますが、
ダウンロード時に該当ファイルがない場合に以下の部分でエラーが発生してしまいます。
System.Net.FtpWebResponse ftpRes =
(System.Net.FtpWebResponse)ftpReq.GetResponse();
ファイルがない場合はダウンロードしないようにするためにはどうすればよいでしょうか。
また、ダウンロードしたファイルを上書きではなく"C:\test.txt"に追記したい場合は
どのように記述を変えればよいでしょうか。
初心者のためあまりC#に詳しくありません。
できればサンプルソースをいただけると助かります。
ご不明点がございましたら別途ご質問ください。
よろしくおねがいします。
C#
1//ダウンロードするファイルのURI 2Uri u = new Uri("ftp://localhost/test.txt"); 3//ダウンロードしたファイルの保存先 4string downFile = "C:\test.txt"; 5 6//FtpWebRequestの作成 7System.Net.FtpWebRequest ftpReq = (System.Net.FtpWebRequest) 8 System.Net.WebRequest.Create(u); 9//ログインユーザー名とパスワードを設定 10ftpReq.Credentials = new System.Net.NetworkCredential("username", "password"); 11//MethodにWebRequestMethods.Ftp.DownloadFile("RETR")を設定 12ftpReq.Method = System.Net.WebRequestMethods.Ftp.DownloadFile; 13//要求の完了後に接続を閉じる 14ftpReq.KeepAlive = false; 15//ASCIIモードで転送する 16ftpReq.UseBinary = false; 17//PASSIVEモードを無効にする 18ftpReq.UsePassive = false; 19 20//FtpWebResponseを取得 21System.Net.FtpWebResponse ftpRes = 22 (System.Net.FtpWebResponse)ftpReq.GetResponse(); 23//ファイルをダウンロードするためのStreamを取得 24System.IO.Stream resStrm = ftpRes.GetResponseStream(); 25//ダウンロードしたファイルを書き込むためのFileStreamを作成 26System.IO.FileStream fs = new System.IO.FileStream( 27 downFile, System.IO.FileMode.Create, System.IO.FileAccess.Write); 28//ダウンロードしたデータを書き込む 29byte[] buffer = new byte[1024]; 30while (true) 31{ 32 int readSize = resStrm.Read(buffer, 0, buffer.Length); 33 if (readSize == 0) 34 break; 35 fs.Write(buffer, 0, readSize); 36} 37fs.Close(); 38resStrm.Close(); 39 40//FTPサーバーから送信されたステータスを表示 41Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription); 42//閉じる 43ftpRes.Close();
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/20 10:49
2020/10/20 12:59