2009-12-28 102 views
0

我想用簡單有效的方式使用ftp傳輸文件。例如,如果我們想發送一個文件就意味着我們只需要把整個文件與命令一起存放起來,但是如果它是一個巨大的文件而網絡強度低的話就意味着自動轉換速度會降低。 即使網絡實力低下,傳輸大文件的有效方法是什麼?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); 
    } 
} 

回答

-1

我解決了線程問題,我把分離功能分成了一個單獨的類。我爲EVRY輸入創建了新的實例,並將它分配給了一個線程。

1

我相信你想加快你的接送服務。

會是怎樣的有效方法 傳輸一個巨大的文件,甚至網絡 strngth低

這是假設你想使用FTP自己編寫應用程序。

+0

嗨我已經使用這種方法我有一些困難,而我的應用程序線程 – karthik 2009-12-28 07:34:52

+0

有什麼困難? – torger 2009-12-28 07:44:43

+0

其實我正在加密,壓縮和分割一個文件,我把 所有這些功能放在一個線程中,而運行應用程序 與它不工作的多個文件它給出了一個例外「xx.dat」正在使用中,如果它是一個單個文件意味着它可以正常工作。這就是我最近一個月堅持的 – karthik 2009-12-28 07:55:55