Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从URL中获取数据并将其保存到C#.NET中的二进制文件中,而不出现编码混乱?_C#_.net_Http_Encoding_Binary - Fatal编程技术网

如何从URL中获取数据并将其保存到C#.NET中的二进制文件中,而不出现编码混乱?

如何从URL中获取数据并将其保存到C#.NET中的二进制文件中,而不出现编码混乱?,c#,.net,http,encoding,binary,C#,.net,Http,Encoding,Binary,在C#.NET中,我想从URL获取数据并将其保存到二进制文件中 使用HttpWebRequest/Streamreader读取字符串并使用StreamWriter保存可以很好地处理ASCII,但非ASCII字符会被破坏,因为系统认为它必须担心编码、编码为Unicode或from或其他 从URL获取数据并将其保存到二进制文件的最简单方法是什么 // This code works, but for ASCII only String url = "url..."; HttpWebRequest

在C#.NET中,我想从URL获取数据并将其保存到二进制文件中

使用HttpWebRequest/Streamreader读取字符串并使用StreamWriter保存可以很好地处理ASCII,但非ASCII字符会被破坏,因为系统认为它必须担心编码、编码为Unicode或from或其他

从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();

只是不要使用任何StreamReader或TextWriter。使用原始文件流保存到文件中

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()
最低限度的回答:

using (WebClient client = new WebClient()) {
    client.DownloadFile(url, filePath);
}
或在PowerShell中(建议匿名编辑):

这就是我使用的:

sUrl = "http://your.com/xml.file.xml";
rssReader = new XmlTextReader(sUrl.ToString());
rssDoc = new XmlDocument();

WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sUrl);

Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
StreamReader objReader = new StreamReader(objStream, Encoding.UTF8);
WebResponse wr = wrGETURL.GetResponse();
Stream receiveStream = wr.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
string content = reader.ReadToEnd();
XmlDocument content2 = new XmlDocument();

content2.LoadXml(content);
content2.Save("direct.xml");

令人惊叹的!非常感谢。这行不是多余的吗?:[System.Net.WebClient]::WebClient@Backwards_Dave很可能;我不是一个powershell爱好者,正如我所指出的:这是通过匿名编辑建议的是,
[System.Net.WebClient]::WebClient
是多余的。不会破坏任何东西,但不是必需的。别忘了使用outFile.Close()。谢谢,@Rios补充道(或者更好地使用)。
sUrl = "http://your.com/xml.file.xml";
rssReader = new XmlTextReader(sUrl.ToString());
rssDoc = new XmlDocument();

WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sUrl);

Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
StreamReader objReader = new StreamReader(objStream, Encoding.UTF8);
WebResponse wr = wrGETURL.GetResponse();
Stream receiveStream = wr.GetResponseStream();
StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);
string content = reader.ReadToEnd();
XmlDocument content2 = new XmlDocument();

content2.LoadXml(content);
content2.Save("direct.xml");