请教高手如何把ftp上的文件下载到本地 我做了一个ftp的资源管理器,类似于FolderBrowserDialog控件,当用户选中某个文件夹时就把该文件夹内所有的东西都下载到本地(包括这个文件夹,就类似于把这个文件夹复制到本地一样),请问高手这个应该如何做啊,求高手给个思路 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.cnblogs.com/swtseaman/archive/2011/03/29/1998611.html using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Net;using System.IO;namespace FTP{ public partial class Form1 : Form { string changeDir; public Form1() { InitializeComponent(); } private void GetFile(Stream stream) { Encoding encoder = System.Text.Encoding.GetEncoding("GB2312"); StreamReader sr = new StreamReader(stream, encoder); string content = sr.ReadToEnd(); string[] file = content.Split('\n'); listBoxcolletion.DataSource = file; sr.Close(); } private void button1_Click(object sender, EventArgs e) { Cursor currentcursor = this.Cursor; FtpWebResponse rs = null; Stream st = null; try { this.Cursor = Cursors.WaitCursor; string ftp = txturi.Text + ":" + txtPort.Text; FtpWebRequest rq = (FtpWebRequest)WebRequest.Create(ftp); rq.Credentials = new NetworkCredential(txtuserName.Text, txtpwd.Text); rq.Method = WebRequestMethods.Ftp.ListDirectory; rs = (FtpWebResponse)rq.GetResponse(); st = rs.GetResponseStream(); GetFile(st); changeDir = string.Empty; } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { if (rs != null) rs.Close(); if (st != null) st.Close(); this.Cursor = currentcursor; } } private void button2_Click(object sender, EventArgs e) { Cursor cur = this.Cursor; FtpWebResponse rs = null; Stream ins = null; Stream ous = null; try { this.Cursor = Cursors.WaitCursor; string ftp = txturi.Text + ":" + txtPort.Text; Uri baseuri = new Uri(ftp); string fileName = listBoxcolletion.SelectedItem.ToString(); string fullName = changeDir + "/" + fileName; Uri uri = new Uri(baseuri, fullName); FtpWebRequest rq = (FtpWebRequest)WebRequest.Create(uri); rq.Credentials = new NetworkCredential(txtuserName.Text, txtpwd.Text); rq.Method = WebRequestMethods.Ftp.DownloadFile; rs = (FtpWebResponse)rq.GetResponse(); ins = rs.GetResponseStream(); saveFileDialog1.FileName = fileName; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { ous = File.OpenWrite(saveFileDialog1.FileName); byte[] bt = new byte[1024]; int size = 0; while ((size = ins.Read(bt, 0, 1024)) > 0) { ous.Write(bt, 0, size); } MessageBox.Show("下载成功"); } } catch { } finally { if (rs != null) rs.Close(); if (ins != null) ins.Close(); if (ous != null) ous.Close(); this.Cursor = cur; } } private void button3_Click(object sender, EventArgs e) { Cursor currentcursor = this.Cursor; FtpWebResponse rs = null; Stream st = null; try { this.Cursor = Cursors.WaitCursor; string subDir = listBoxcolletion.SelectedItem.ToString(); changeDir += "/" + subDir; string ftp = txturi.Text + ":" + txtPort.Text; Uri baseuri = new Uri(ftp); Uri uri = new Uri(baseuri, changeDir); FtpWebRequest rq = (FtpWebRequest)WebRequest.Create(uri); rq.Credentials = new NetworkCredential(txtuserName.Text, txtpwd.Text); rq.Method = WebRequestMethods.Ftp.ListDirectory; rs = (FtpWebResponse)rq.GetResponse(); st = rs.GetResponseStream(); GetFile(st); } catch { } finally { if (rs != null) rs.Close(); if (st != null) st.Close(); this.Cursor = currentcursor; } } }}仅供参考··· C#添加判断中文并且添加空格 纠结的问题-多线程加载外部dll 水晶报表--你为什么又是登录失败。。 C#写JAVASCRIPT 数组 A类引用B类,在B类里怎么又怎么调用A类的控件属性 问个Windows编程小问题哈 求助:C#应用程序中数据库操作问题 C#科大讯飞文本语音读取功能如何调用 如何在c#web上弹出消息框? 如何从ini文件中读出要求的内容? 正则匹配问题 为什么用Bitmap类生成的图片不能被C++程序 或PS识别?
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;namespace FTP
{
public partial class Form1 : Form
{
string changeDir;
public Form1()
{
InitializeComponent();
}
private void GetFile(Stream stream)
{
Encoding encoder = System.Text.Encoding.GetEncoding("GB2312");
StreamReader sr = new StreamReader(stream, encoder);
string content = sr.ReadToEnd();
string[] file = content.Split('\n');
listBoxcolletion.DataSource = file;
sr.Close();
} private void button1_Click(object sender, EventArgs e)
{
Cursor currentcursor = this.Cursor;
FtpWebResponse rs = null;
Stream st = null;
try
{
this.Cursor = Cursors.WaitCursor;
string ftp = txturi.Text + ":" + txtPort.Text;
FtpWebRequest rq = (FtpWebRequest)WebRequest.Create(ftp);
rq.Credentials = new NetworkCredential(txtuserName.Text, txtpwd.Text);
rq.Method = WebRequestMethods.Ftp.ListDirectory;
rs = (FtpWebResponse)rq.GetResponse();
st = rs.GetResponseStream();
GetFile(st);
changeDir = string.Empty;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (rs != null) rs.Close();
if (st != null) st.Close();
this.Cursor = currentcursor;
}
} private void button2_Click(object sender, EventArgs e)
{
Cursor cur = this.Cursor;
FtpWebResponse rs = null;
Stream ins = null;
Stream ous = null;
try
{
this.Cursor = Cursors.WaitCursor;
string ftp = txturi.Text + ":" + txtPort.Text;
Uri baseuri = new Uri(ftp);
string fileName = listBoxcolletion.SelectedItem.ToString();
string fullName = changeDir + "/" + fileName;
Uri uri = new Uri(baseuri, fullName);
FtpWebRequest rq = (FtpWebRequest)WebRequest.Create(uri);
rq.Credentials = new NetworkCredential(txtuserName.Text, txtpwd.Text);
rq.Method = WebRequestMethods.Ftp.DownloadFile;
rs = (FtpWebResponse)rq.GetResponse();
ins = rs.GetResponseStream();
saveFileDialog1.FileName = fileName;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
ous = File.OpenWrite(saveFileDialog1.FileName);
byte[] bt = new byte[1024];
int size = 0;
while ((size = ins.Read(bt, 0, 1024)) > 0)
{
ous.Write(bt, 0, size);
}
MessageBox.Show("下载成功");
}
}
catch
{ }
finally
{
if (rs != null) rs.Close();
if (ins != null) ins.Close();
if (ous != null) ous.Close();
this.Cursor = cur;
}
} private void button3_Click(object sender, EventArgs e)
{
Cursor currentcursor = this.Cursor;
FtpWebResponse rs = null;
Stream st = null;
try
{
this.Cursor = Cursors.WaitCursor;
string subDir = listBoxcolletion.SelectedItem.ToString();
changeDir += "/" + subDir;
string ftp = txturi.Text + ":" + txtPort.Text;
Uri baseuri = new Uri(ftp);
Uri uri = new Uri(baseuri, changeDir);
FtpWebRequest rq = (FtpWebRequest)WebRequest.Create(uri);
rq.Credentials = new NetworkCredential(txtuserName.Text, txtpwd.Text);
rq.Method = WebRequestMethods.Ftp.ListDirectory;
rs = (FtpWebResponse)rq.GetResponse();
st = rs.GetResponseStream();
GetFile(st);
}
catch
{ }
finally
{
if (rs != null) rs.Close();
if (st != null) st.Close();
this.Cursor = currentcursor;
}
}
}
}
仅供参考···