大檔案Copy
private void button3_Click(object sender, EventArgs e)
{
Thread thread = null;
//為了不讓介面死掉,要將該操作放在一個執行緒中
thread = new Thread
(
() =>
{
//告訴系統不去檢測非法的跨執行緒呼叫
CheckForIllegalCrossThreadCalls = false;
//建立一個檔案流指向原始檔
FileStream fsRead = new FileStream(this.textBox1.Text, FileMode.Open);
//建立一個檔案流指向目標檔案
FileStream fsWrite = new FileStream(this.textBox2.Text, FileMode.Create);
//記錄一下該檔案的長度
long fileLength = fsRead.Length;
//定義一個1M的緩衝區
byte[] buffer = new byte[1024 * 1024];
//先讀取一次,並且將讀取到的真正內容長度記錄下來
int readLength = fsRead.Read(buffer, 0, buffer.Length);
//用來記錄已經將多少內容寫入到了檔案中
long readCount = 0;
//只要讀取到的內容不為0就接著讀
while (readLength!=0)
{
//將前面已經讀取到記憶體中的資料寫入到檔案中
fsWrite.Write(buffer ,0,readLength);
//已經讀取的數量累加
readCount += readLength;
//計算已經讀取的資料百分比
int percentage =(int)( readCount * 100 / fileLength);
this.progressBar1.Value = percentage;
//進行下一次讀取
readLength = fsRead.Read(buffer, 0, buffer.Length);
{
Thread thread = null;
//為了不讓介面死掉,要將該操作放在一個執行緒中
thread = new Thread
(
() =>
{
//告訴系統不去檢測非法的跨執行緒呼叫
CheckForIllegalCrossThreadCalls = false;
//建立一個檔案流指向原始檔
FileStream fsRead = new FileStream(this.textBox1.Text, FileMode.Open);
//建立一個檔案流指向目標檔案
FileStream fsWrite = new FileStream(this.textBox2.Text, FileMode.Create);
//記錄一下該檔案的長度
long fileLength = fsRead.Length;
//定義一個1M的緩衝區
byte[] buffer = new byte[1024 * 1024];
//先讀取一次,並且將讀取到的真正內容長度記錄下來
int readLength = fsRead.Read(buffer, 0, buffer.Length);
//用來記錄已經將多少內容寫入到了檔案中
long readCount = 0;
//只要讀取到的內容不為0就接著讀
while (readLength!=0)
{
//將前面已經讀取到記憶體中的資料寫入到檔案中
fsWrite.Write(buffer ,0,readLength);
//已經讀取的數量累加
readCount += readLength;
//計算已經讀取的資料百分比
int percentage =(int)( readCount * 100 / fileLength);
this.progressBar1.Value = percentage;
//進行下一次讀取
readLength = fsRead.Read(buffer, 0, buffer.Length);
}
fsRead.Close();
fsWrite.Close();
//清空緩衝區
buffer = null;
//回收一下記憶體
GC.Collect();
thread.Abort();
}
);
thread.Start();
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-671712/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將ASM裡面的檔案copy到檔案系統ASM
- copy檔案到其他的路徑
- 一次資料檔案COPY
- 【cmd】IF ELSE 複製(copy)檔案問題
- 資料檔案誤刪--但有資料檔案的copy恢復
- ASM與檔案系統之間copy資料檔案--檔案系統到ASMASM
- 編碼的進階,檔案操作,深淺copy
- (轉)Linux之間copy檔案常用方法 scpLinux
- RMAN關於物理檔案copy的增量備份
- Copy of a Copy of a Copy
- Dockerfile小記之操作檔案的命令ADD©Docker
- Docker的`COPY --chmod`可將映象檔案大小減少35%Docker
- 遞迴遍歷磁碟下的某一資料夾中所有檔案,並copy檔案生成檔案和帶資料夾的檔案遞迴
- 採用scp命令在Linux系統之間copy檔案Linux
- 如何分發大檔案、大檔案傳輸解決方案
- 如何快速傳輸大檔案,介紹大檔案快速方法
- php移動檔案的函式move_uploaded_file()和copyPHP函式
- 10gR2rman backup as copy移動資料檔案,非常方便!
- CentOS 7.9虛擬機器無法主機之間copy檔案CentOS虛擬機
- JAVA切分大檔案Java
- git大檔案管理Git
- 檢視大檔案
- 查詢大檔案
- 大檔案如何傳輸,大檔案的傳輸方式有哪些?
- git 查詢大檔案、刪除大檔案詳細步驟Git
- scp一個大檔案
- 大檔案表空間
- 如何把大 Excel 檔案拆成多個小檔案Excel
- 超級檔案分割《合併》機(分割大檔案)
- 使用shell指令碼及asm cp或RMAN copy批量將資料檔案從ASM拷貝到檔案系統指令碼ASM
- 資料庫引數檔案控制檔案日誌檔案資料檔案跟蹤檔案等8大檔案的字典資料庫
- 有了大檔案傳輸加速功能,不再擔憂傳輸大檔案
- 4種大檔案傳輸工具和軟體,用於共享大檔案
- 如何快速傳輸大檔案:4 種大檔案傳輸有效的方法
- 工作總結 1 sql寫法 insert into select from 2 vs中 obj檔案和bin檔案 3 npoi 模板copy CopySheet 最好先全部Copy完後 再根據生成sh...SQLOBJ
- .Net通用大檔案上傳類(可上傳大檔案,vs2005)
- 日誌檔案過大清理
- rsync命令快速刪大檔案