FTP中的文件传输

时间:2009-12-28 07:24:22

标签: multithreading ftp c#-2.0

我想以简单有效的方式使用ftp传输文件。例如,如果我们要发送文件意味着我们只是将整个文件放在命令中,但如果它是一个巨大的文件并且网络强度很低意味着自动转移速度将会降低。 即使网络强度传输大文件的有效方法是什么?

下面是我得到一些错误的代码,请看看它。我在这里使用了线程:

public partial class Form1 : Form
{
    ArrayList AscendingList = new ArrayList();
    ListViewItem Litem = null;
    Thread MyThread = null;
    ThreadStart Starter = null;

    public Form1()
    {
        InitializeComponent();
    }

    private void btn_split_Click(object sender, EventArgs e)
    {
        foreach (ListViewItem litem in listView1.Items)
        {
            Starter = delegate { SplitFile(litem.Text,litem.SubItems[1].Text,int.Parse(litem.SubItems[2].Text)); };
            MyThread = new Thread(Starter);
            MyThread.IsBackground = true;
            MyThread.Start();
        }
    }
    public void SplitFile(string inputFile, string outputPrefix, int chunkSize)
    {
        int pointr = 0;
        byte[] buffer = new byte[chunkSize];

        using (FileStream fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read, FileShare.None))
        {
            int index = 0;
            pointr = fs.Read(buffer, 0, buffer.Length);
            while (pointr != 0)
            {
                using (FileStream fso = new FileStream(outputPrefix + "\\" + index + ".log", FileMode.Create))
                {
                    AscendingList.Add(fso.Name);
                    fso.Write(buffer, 0, pointr);
                    pointr = fs.Read(buffer, 0, buffer.Length);
                }
                index++;
            }
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Litem = new ListViewItem();
        Litem.Text = "E:\\butterfly.mpg";
        Litem.SubItems.Add("H:\\karthik");
        Litem.SubItems.Add("102400");
        listView1.Items.Add(Litem);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Litem = new ListViewItem();
        Litem.Text = "E:\\karthik.mpeg";
        Litem.SubItems.Add("H:\\karthik\\karthik");
        Litem.SubItems.Add("102400");
        listView1.Items.Add(Litem);
    }
}

2 个答案:

答案 0 :(得分:1)

我相信你想加快你的转会。

  

什么是有效的方法   转移一个巨大的文件甚至网络   力量很低

假设您希望自己使用FTP编写应用程序。

答案 1 :(得分:-1)

我解决了线索问题,我将分离的功能分成了一个单独的类。我为EVIVE输入创建了新的实例并将它分配给了一个THREAD.IT工作现在很精细。