我想用簡單有效的方式使用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);
}
}
嗨我已經使用這種方法我有一些困難,而我的應用程序線程 – karthik 2009-12-28 07:34:52
有什麼困難? – torger 2009-12-28 07:44:43
其實我正在加密,壓縮和分割一個文件,我把 所有這些功能放在一個線程中,而運行應用程序 與它不工作的多個文件它給出了一個例外「xx.dat」正在使用中,如果它是一個單個文件意味着它可以正常工作。這就是我最近一個月堅持的 – karthik 2009-12-28 07:55:55