日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Winform中实现批量文件复制(附代码下载)

發布時間:2025/3/19 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Winform中实现批量文件复制(附代码下载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景

效果

?

將要批量復制的文件拖拽到窗體中,然后點擊下邊選擇目標文件夾,然后點擊復制按鈕。

?

注:

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

新建一個窗體,布局設計如下

上面是一個ListView,下面是TextBox和兩個Button,然后添加一個路徑選擇控件。

?

在窗體的load事件中對ListView進行樣式設置

?private void Form1_Load(object sender, EventArgs e){listView1.GridLines = true;//在各數據之間形成網格線listView1.View = View.Details;//顯示列名稱listView1.FullRowSelect = true;//在單擊某項時,對其進行選中listView1.HeaderStyle = ColumnHeaderStyle.Nonclickable;//隱藏列標題listView1.Columns.Add("文件路徑", listView1.Width - 5, HorizontalAlignment.Right);}

然后編寫listView的脫拽事件,使其能獲取到拖拽文件并顯示

private void listView1_DragEnter(object sender, DragEventArgs e){e.Effect = DragDropEffects.Copy;???????//設置拖放操作中目標放置類型為復制String[] str_Drop = (String[])e.Data.GetData(DataFormats.FileDrop, true);//檢索數據格式相關聯的數據Data_List(listView1, str_Drop[0]);} ??????? public void Data_List(ListView LV, string F)? //Form或MouseEventArgs添加命名空間using System.Windows.Forms;{ListViewItem item = new ListViewItem(F);LV.Items.Add(item);}

然后編寫三個點按鈕的點擊事件,使其打開路徑選擇對話框,并將選擇的路徑顯示在TextBox中。

private void button2_Click(object sender, EventArgs e){if (folderBrowserDialog1.ShowDialog() == DialogResult.OK){textBox1.Text = folderBrowserDialog1.SelectedPath;}}

然后編寫復制按鈕的點擊事件

private void button1_Click(object sender, EventArgs e){string FileName = "";int tem_n = 0;string DName = "";if (textBox1.Text.Length > 0 && listView1.Items.Count > 0){try{for (int i = 0; i < listView1.Items.Count; i++){FileName = listView1.Items[i].SubItems[0].Text;tem_n = FileName.LastIndexOf("\\");FileName = FileName.Substring(tem_n + 1, FileName.Length - tem_n - 1);DName = textBox1.Text.Trim() + "\\" + FileName;CopyFile(listView1.Items[i].SubItems[0].Text, DName, 1024);this.Text = "復制:" + listView1.Items[i].SubItems[0].Text;}MessageBox.Show("文件批量復制完成。");}catch{MessageBox.Show("文件復制錯誤。");}}}

在復制按鈕的點擊事件中執行復制文件的方法CopyFile

FileStream FormerOpen;FileStream ToFileOpen;/// <summary>/// 文件的復制/// </summary>/// <param FormerFile="string">源文件路徑</param>/// <param toFile="string">目的文件路徑</param>/// <param SectSize="int">傳輸大小</param>/// <param progressBar="ProgressBar">ProgressBar控件</param>public void CopyFile(string FormerFile, string toFile, int SectSize){FileStream fileToCreate = new FileStream(toFile, FileMode.Create);??//創建目的文件,如果已存在將被覆蓋fileToCreate.Close();??????????//關閉所有資源fileToCreate.Dispose();??????????//釋放所有資源FormerOpen = new FileStream(FormerFile, FileMode.Open, FileAccess.Read);//以只讀方式打開源文件ToFileOpen = new FileStream(toFile, FileMode.Append, FileAccess.Write);?//以寫方式打開目的文件//根據一次傳輸的大小,計算傳輸的個數//int max = Convert.ToInt32(Math.Ceiling((double)FormerOpen.Length / (double)SectSize));int FileSize;????????????//要拷貝的文件的大小//如果分段拷貝,即每次拷貝內容小于文件總長度if (SectSize < FormerOpen.Length){byte[] buffer = new byte[SectSize];???????//根據傳輸的大小,定義一個字節數組int copied = 0;??????????//記錄傳輸的大小while (copied <= ((int)FormerOpen.Length - SectSize))???//拷貝主體部分{FileSize = FormerOpen.Read(buffer, 0, SectSize);???//從0開始讀,每次最大讀SectSizeFormerOpen.Flush();????????//清空緩存ToFileOpen.Write(buffer, 0, SectSize);?????//向目的文件寫入字節ToFileOpen.Flush();?????????//清空緩存ToFileOpen.Position = FormerOpen.Position;????//使源文件和目的文件流的位置相同copied += FileSize;?????????//記錄已拷貝的大小}int left = (int)FormerOpen.Length - copied;??????//獲取剩余大小FileSize = FormerOpen.Read(buffer, 0, left);?????//讀取剩余的字節FormerOpen.Flush();?????????//清空緩存ToFileOpen.Write(buffer, 0, left);???????//寫入剩余的部分ToFileOpen.Flush();?????????//清空緩存}//如果整體拷貝,即每次拷貝內容大于文件總長度else{byte[] buffer = new byte[FormerOpen.Length];????//獲取文件的大小FormerOpen.Read(buffer, 0, (int)FormerOpen.Length);???//讀取源文件的字節FormerOpen.Flush();?????????//清空緩存ToFileOpen.Write(buffer, 0, (int)FormerOpen.Length);???//寫放字節ToFileOpen.Flush();?????????//清空緩存}FormerOpen.Close();??????????//釋放所有資源ToFileOpen.Close();??????????//釋放所有資源}

代碼下載

https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/12028246

總結

以上是生活随笔為你收集整理的Winform中实现批量文件复制(附代码下载)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。