C# 从网上下载文件

C# 从网上下载文件,c#,.net,proxy,download,textreader,C#,.net,Proxy,Download,Textreader,是否有办法通过代理使以下功能正常工作 public T[]ReadStream(System.IO.TextReader) 我希望能够代理读卡器实例,以便它可以在尝试读取时从web下载文件,并将其缓存到某个地方 或者可能有一些默认设置用于此目的?使用WebClient.DownloadFile。如果需要代理,可以设置WebClient对象的代理属性 下面是一个例子: using (var client = new WebClient()) { client.Proxy = new Web

是否有办法通过代理使以下功能正常工作

public T[]ReadStream(System.IO.TextReader)

我希望能够代理
读卡器
实例,以便它可以在尝试读取时从web下载文件,并将其缓存到某个地方


或者可能有一些默认设置用于此目的?

使用WebClient.DownloadFile。如果需要代理,可以设置WebClient对象的代理属性

下面是一个例子:

using (var client = new WebClient())
{
    client.Proxy = new WebProxy("some.proxy.com", 8000);
    client.DownloadFile("example.com/file.jpg", "file.jpg");
}
您还可以使用BinaryReader按部分下载文件:

using (var client = new WebClient())
{
    client.Proxy = new WebProxy("some.proxy.com", 8000);

    using (var reader = new BinaryReader(client.OpenRead("example.com/file.jpg")))
    {
        reader.ReadByte();
        reader.ReadInt32();
        reader.ReadBoolean();

        // etc.
    }
}

也许这就是你想要的?鉴于你对先前答案的评论,我对问题的措辞也有点困惑

public StreamReader GetWebReader(string uri)
{
    var webRequest = WebRequest.Create(uri);
    var webResponse = webRequest.GetResponse();
    var responseStream = webResponse.GetResponseStream();
    return new StreamReader(responseStream);
}

你的建议是显而易见的。当我谈到
代理时,我指的是一个对象,它将从web上顺序缓存文件,并将所有
读取类调用从适当的接口重新路由到缓存的文件块。所以我可以说
TextReader t=newmycustomwebreader(“http://www.site.com/file.zip");并且它会读取它(显然会有一些停顿)。我不确定你要的是什么。与此类似,
StreamReader
是在web查询的基础上构建的:我想要对任意远程文件进行相同的处理。不必进行代理,只需在
StreamReader
中包装一个查询,以便它按顺序下载和读取文件。如果这不是我15分钟前写的答案,那就好了:)
public StreamReader GetWebReader(string uri)
{
    var webRequest = WebRequest.Create(uri);
    var webResponse = webRequest.GetResponse();
    var responseStream = webResponse.GetResponseStream();
    return new StreamReader(responseStream);
}