winform文件迁移工具
服务器D盘上传的文件过多,空间剩下很少了,于是想把里面部分文件,大概几万个文件转移到E盘,做了这个小工具。先查询出要转移的文件清单,保存在一个记事本中,如下所示:
接着读取文件名,一个个移动到指定目录中去,winform窗体布局及效果如下:
完整代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;namespace FileMoveTools
{public partial class Form1 : Form{public Form1(){InitializeComponent();}#region 目录 private void btnBrowseSrcDir_Click(object sender, EventArgs e){ using (FolderBrowserDialog dialog = new FolderBrowserDialog()){if (dialog.ShowDialog() == DialogResult.OK)txtSrcDir.Text = dialog.SelectedPath;}}private void btnBrowseFile_Click(object sender, EventArgs e){using (OpenFileDialog openFileDialog = new OpenFileDialog()){openFileDialog.Filter = "Text (*.txt)|*.txt;";openFileDialog.AddExtension = true;openFileDialog.RestoreDirectory = true;if (openFileDialog.ShowDialog() == DialogResult.OK){txtFile.Text = openFileDialog.FileName;}} }private void btnSetDestDir_Click(object sender, EventArgs e){using (FolderBrowserDialog dialog = new FolderBrowserDialog()){if (dialog.ShowDialog() == DialogResult.OK)txtDestDir.Text = dialog.SelectedPath;}}#endregionprivate void btnOK_Click(object sender, EventArgs e){Thread mythread = new Thread(MoveFile);mythread.IsBackground = true;mythread.Start(); }private void MoveFile(){string srcDir = txtSrcDir.Text.Trim();string destDir = txtDestDir.Text.Trim();string files = txtFile.Text.Trim();#region 验证路径是否存在if (!Directory.Exists(srcDir)){statusMsg.Text = "要迁移的目录不存在";return;}if (!Directory.Exists(destDir)){statusMsg.Text = "迁移后的目录不存在";return;}if (!File.Exists(files)){statusMsg.Text = "文件清单不存!";return;}#endregionstatusMsg.Text = "文件开始迁移..";int count = 0;using (StreamReader sr = new StreamReader(files, Encoding.UTF8)){string strline = null;while ((strline = sr.ReadLine()) != null){long diskFreeSpace = GetHardDiskFreeSpace("D");if (diskFreeSpace <= 5){statusMsg.Text = "硬盘空间剩下5GB,停止迁移文件.";return;}string sourceFileName = srcDir + "/" + strline;string destFileName = destDir + "/" + strline;if (File.Exists(sourceFileName)){count++;statusMsg.Text = "当前迁移第 " + count + " 个文件";File.Move(sourceFileName, destFileName);}}}this.Invoke(new Action(() =>{statusMsg.Text = "迁移了 " + count + " 个文件,完成";})); }/// <summary> /// 获取指定驱动器的剩余空间总大小(单位为GB) /// </summary> /// <param name="str_HardDiskName">只需输入代表驱动器的字母即可 </param> /// <returns> </returns> private static long GetHardDiskFreeSpace(string str_HardDiskName){long freeSpace = new long();str_HardDiskName = str_HardDiskName + ":\\";System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();foreach (System.IO.DriveInfo drive in drives){if (drive.Name == str_HardDiskName){freeSpace = drive.TotalFreeSpace / (1024 * 1024 * 1024);}}return freeSpace;} }
}
winform文件迁移工具相关推荐
- C# WinForm 文件上传下载
/**//// <summary> /// WebClient上传文件至服务器 /// </summary> /// <p ...
- java文件迁移工具,Java的迁移
我使用Hibernate的SchemaUpdate来执行与迁移相同的function. 这实际上比迁移更容易,因为每次启动应用程序时,都会检查数据库结构并将其与映射进行同步,因此不需要额外的耙:db: ...
- C# WinForm 文件夹选择控件 folderBrowserDialog 的应用实例
上期文章<使用 C# 修改文件创建时间>中有文件夹选择控件,但并没有提到如何使用,所以这次主要是针对这个控件讲下如何使用的一些细节.就两个动作,请看下图: 1.从工具箱中"双击& ...
- 将一坨WinForm文件包装成一个exe
什么 .net core 3.1 新特性,ILMerge,Costura.Fody 都试了一遍,真心都不好使. 还是 WinRAR 最实在~ 第一步选中 Release 或它的子文件夹,就是最终包含你 ...
- winform 文件拖拽drag\drop
winform 重写函数,而不是控件委托事件 protected override void OnDragDrop(DragEventArgs drgevent) protected override ...
- DevExpress.XtraBars.Ribbon控件使用系列 (1)创建Ribbon窗体
题外话,为什么每次输入内容的时候,编辑器直接输入汉字不可以呢,必须先输入一个非汉字字符才可以输入汉字,我使用的是搜狗输入法,难道是输入法的事? 最近在研究DevExpress的WinForm控件,先从 ...
- PST转换软件 v6.3
简介: 通过Outlook Migrator可以无需安装Outlook即可将无限数量的Outlookpst转换为多种文件格式,并将带有附件的电子邮件导出为选定的文件格式,还可以将所有电子邮件从PST文 ...
- 如何将自己的代码自动添加版权信息[转]
现在大多数公司都规定程序员在程序文件的头部加上版权信息,这样每个人写的文件都可以区分开来,如果某个文件出现问题就可以快速的找到文件的创建人,用最短的时间来解决问题,常常是以下格式: //======= ...
- react 数据可视化_使用d3创建数据可视化并在2020年做出React
react 数据可视化 Data visualisation and application technologies have evolved greatly over the past decad ...
最新文章
- AJAXControlToolkit-Framework3.5SP1 下载地址
- ansible文档官网
- .NET 中关于 TypeCode 和枚举类型的问题
- mysql like 多个条件_MySQL高性能索引策略
- 指纹浏览器 开源 linux,浏览器指纹--Canvas指纹
- 数字锁相环的matlab仿真
- Silverlight实例教程 - Out of Browser的Debug和Notifications窗口
- Hive精华问答 | Hive的数据模型是怎样的?
- java 局部内部类常用么_Java中的内部类
- Asp.Net MVC 控制器
- 全网首发:JDK绘制文字:五、字体上下文产生流程
- Ubuntu 20.4 安装 Notepad++
- ESP8266WiFi模块资料整理
- 厉建宇的阿里巴巴离职信
- 边缘计算七大核心技术
- c语言指针什么时候加星号,c语言中指针前面的星号,什么时候可以省去,什么时候又必须带上呢?(转载)...
- zookeeper C API 完整运行实例
- 微软小娜 服务器连不上,windows10小娜连不上网络怎么办 win10小娜无法连接网络如何解决...
- Stm32 - Printf重定向(不)使用微库(Keil MDK)
- CentOS 7安装MySQL集群-GALERA CLUSTER 4 FOR MYSQL 8 RELEASE
热门文章
- Spark中如何管理Spark Streaming消费Kafka的偏移量
- lucene全文检索的概念
- selector选择器查询
- html5的canvas动画,Canvas HTML5简介 · Canvas动画教程
- mysql数据字典的通俗理解_MySQL关于数据字典的一个疑问
- opencv矩阵掩膜操作(提高图片对比度)
- #{}不自动改参数类型_我是干流动补胎的,想让我的柴油机气泵自动打气,怎么改装。谢谢。...
- pdf覆盖图片 Java_Java 添加、替换、删除PDF中的图片的示例代码
- java listview排序_android listviewadapter 怎么进行排序
- html边缘取消白边,Photoshop巧用边缘蒙版去除锐化后的白边