今日のメイン記録、共有、ダウンロード/入手ファイルにWebクライアントを使用するには、2つの方法が。
いくつかの単語の男は、コードを配置し、言いました。
最初:カプセル化法からの使用Webクライアント:DownloadFile() ;直接ダウンロードするのは簡単。
/// <要約> /// ファイルをダウンロード(WebClient.DownloadFile) /// </要約> /// ます。<param name = "downFileUrl"> ダウンロードファイルリンクアドレス</ param>の /// <PARAM NAME = "関数savepath「> パス保存</ param>の /// <戻り値> </戻り値> 公共の 静的な 文字列 DownLoadFileByWebClientStatic(文字 downFileUrl、文字列関数savepath) { 文字列の結果= 文字列.Empty; 試し { WebClientのwcClient = 新しい新しいWebクライアント(); wcClient.DownloadFile(downFileUrl、関数savepath); 結果 = " ダウンロード成功" ; } キャッチ(WebException EX) { 結果 = $ " のダウンロードに失敗しました{ex.Message =エラー!} " ; } 戻り結果; } /// <概要> /// ファイルをダウンロードする(wcClient.DownloadFileAsync) /// </要約> /// ます。<param name = "downFileUrl"> ダウンロードファイルリンクアドレス</ param>の /// <PARAM NAME = "関数savepath">パスの保存</ param>の /// <戻り値> </戻り> パブリック 静的 文字列 DownLoadFileMethod(列 downFileUrl、文字列関数savepath) { 文字列の結果= 文字列.Empty; 試み { WebクライアントwcClient = 新しい新しいWebクライアント(); wcClient.DownloadDataCompleted + =(T、S)= > { 結果 = " ダウンロード成功" ; //は、直接(ステートレス?)を返さない }; wcClient.DownloadFileAsync(新新URI(downFileUrl)、関数savepath)。 } キャッチ(WebException EX) { 結果 = $ " !の下载失败エラー= {ex.Message} " ; } 戻り値の結果; }
第二:ファイルを読み取るために使用することは、ファイルを取得/ダウンロードをストリーミング。(セルフテストを介して)
/// <要約> /// ダウンロードファイル(ストリーム処理型) /// </要約> /// <PARAM NAME = "downFileUrl"> ファイルリンクアドレスをダウンロードしてください。</ param>の /// <PARAM NAME = "関数savepath「> パス保存</ param>の /// <戻り値> </戻り値> 公共の 静的な 文字列 DownLoadFileByWebClient(文字 downFileUrl、文字列関数savepath) { 文字列の結果= 文字列.Empty; 試し { WebClientのwcClient = 新しい新しいWebクライアント(); WebRequestクラスwebReq = WebRequest.Create(downFileUrl)。 WebResponse webRes = webReq.GetResponse()。 長い FileLength関数= webRes.ContentLength。 ストリームSRM = webRes.GetResponseStream()。 StreamReaderをsrmReader = 新しいStreamReaderを(SRM); バイト [] bufferbyte = 新しい バイト[FileLength関数]; INT allByte =(INT )bufferbyte.Length。 int型 startByte = 0 ; 同時に(FileLength関数> 0 ) { int型 downByte = srm.Read(bufferbyte、StartByte、allByte); 場合(downByte == 0)BREAK ; StartByte + = downByte; allByte - = downByte; } // ファイルディレクトリ保存が存在するか否かを検出する 場合(!File.Exists(関数savepath)) { 文字列 [] = dirArray savePath.Split(' \\ ' ); 文字列の TEMP = 文字列。空の; 以下のために(INT iが= 0 - 、I <dirArray.Length 1 ; I ++ ) { TEMP + = dirArray [I] .Trim()+ " \\ " 。 もし(!Directory.Exists(TEMP)) Directory.CreateDirectory(温度)。 } } 使用して(FileStreamをfsSave = 新しいFileStreamを(関数savepath、FileMode.OpenOrCreate、FileAccess.Write)) { fsSave.Write(bufferbyte、0、Bufferbyte.Length); fsSave.Dispose(); } // 両方の方法を使用するのと同じ。 // のFileStream新しい新しいFS = FileStreamを(関数savepath、FileMode.OpenOrCreate、FileAccess.Write); // fs.Write(bufferbyte、0、bufferbyte.Length); srm.Close(); srmReader.Close(); // FS。クローズ(); 結果は = $ " ダウンロード成功関数savepath {} =パス" ; } キャッチ(WebException EX) { 結果 = $ " ダウンロードが失敗ex.Message {!} =エラー"; } 戻り値の結果; }
第二のファイル、ダウンロードすることによって、ストリーム方式の枝を、次に取得する:( OpenRead Webクライアント(の使用)のストリームへの道、およびファイルストリームを読んで、私はなぜ知らない、セルフテストに失敗し、ファイルが開かないダウンロードしてください)。私は合理的な説明を見つけていない、私はあなたがコメントを願っています。
/// <要約> /// ダウンロードファイル /// </要約> /// ます。<param name = "URLAddress"> リソースのURL </ param>の /// <PARAM NAME = "saveBasePath"> 保存ルートディレクトリ/ディレクトリ</ param>の /// <戻り値> </戻り値> 公共の 文字列 DownFileByStream(文字 URLAddress、文字列saveBasePath) { 文字列の結果= 文字列.Empty; 試し { Webクライアントクライアント = 新しい新しいWebクライアント(); ストリームSTR =client.OpenRead(URLAddress); StreamReaderをリーダー = 新しい新しいStreamReaderを(STR); バイト []バイト= 新しい新しい バイト [ 1024 * 1024 ]; // カスタムサイズ1M int型 allybytes =(int型)bytes.Length; int型 startbytes = 0 ; 一方、(allybytes> 0 ) { int型、M = str.Read(バイト、startbytes、allybytes); // リードバイトの現在位置を取得 IF(M == 0 ) BREAK。 startbytes + = M。 allybytes - = M。 } reader.Dispose()。 str.Dispose(); 文字列パス= saveBasePath + System.IO.Path.GetFileName(URLAddress)。 FileStreamをfsWrite = 新しいFileStreamを(パス、FileMode.OpenOrCreate、FileAccess.Write)。 fsWrite.Write(バイト0 、startbytes)。 fsWrite.Flush(); fsWrite.Close(); 結果 = " 下载成功!" ; } キャッチ(例外EX) { 結果 = " ダウンロードに失敗しました!" + ex.Message; } 戻り結果; }
不合理な場合は、そのことを歓迎します。これらは、今日の記録であり、この記事の内容のほとんどは、少し仕上げを行うにはちょうどここに見つけることができます。
あなたはあなたにこの記事が参考に思われる場合は、「お気に入り」ボタンをクリックしてください!(/:スマイル)転載を歓迎し、ソースを明記してください。