jms*_*jms 20 .net c# binary encoding http
在C#.NET中,我想从URL获取数据并将其保存为二进制文件.
使用的HttpWebRequest/StreamReader的读入一个字符串,并使用StreamWriter的节能工作正常ASCII,但非ASCII字符得到错位,因为系统认为它有担心编码,编码为Unicode或或什么的.
从URL获取数据并将其保存到文件二进制文件的最简单方法是什么?
// This code works, but for ASCII only
String url = "url...";
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(url);
// execute the request
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();
// we will read data via the response stream
Stream ReceiveStream = response.GetResponseStream();
StreamReader readStream = new StreamReader( ReceiveStream );
string contents = readStream.ReadToEnd();
string filename = @"...";
// create a writer and open the file
TextWriter tw = new StreamWriter(filename);
tw.Write(contents.Substring(5));
tw.Close();
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 55
极简主义回答:
using (WebClient client = new WebClient()) {
client.DownloadFile(url, filePath);
}
Run Code Online (Sandbox Code Playgroud)
或者在PowerShell中(在匿名编辑中建议):
[System.Net.WebClient]::WebClient
$client = New-Object System.Net.WebClient
$client.DownloadFile($URL, $Filename)
Run Code Online (Sandbox Code Playgroud)
Mat*_*hen 14
只是不要使用任何StreamReader或TextWriter.使用原始FileStream保存到文件中.
String url = ...;
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
// execute the request
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
// we will read data via the response stream
Stream ReceiveStream = response.GetResponseStream();
string filename = ...;
byte[] buffer = new byte[1024];
FileStream outFile = new FileStream(filename, FileMode.Create);
int bytesRead;
while((bytesRead = ReceiveStream.Read(buffer, 0, buffer.Length)) != 0)
outFile.Write(buffer, 0, bytesRead);
// Or using statement instead
outFile.Close()
Run Code Online (Sandbox Code Playgroud)