博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
winform文件迁移工具
阅读量:5888 次
发布时间:2019-06-19

本文共 4256 字,大约阅读时间需要 14 分钟。

服务器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;            }        }        #endregion        private 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;            }            #endregion            statusMsg.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 + " 个文件,完成";            }));          }              ///           /// 获取指定驱动器的剩余空间总大小(单位为GB)         ///           ///  只需输入代表驱动器的字母即可          ///  
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; } }}

 

 

你可能感兴趣的文章
mysql5.7 外键错误_mysql5.7 创建表外键失败 求看下!!!! 折磨我一天了?
查看>>
python asyncio文件操作_Python中使用asyncio封装文件读写详解及实例
查看>>
java邮件数据库_java 发送数据库查询的数据作为excel表格邮件
查看>>
画图程序 java_一个JAVA画图程序
查看>>
java深度解析 pdf_这一份Spring源码解析PDF,阿里架构师直言:全网最深度解析!...
查看>>
为什么java类中可以创建实例_java – 为什么我出乎意料地能够创建我的单例类的多个实例?...
查看>>
将java与sql相连_JAVA与数据库MySQL相连接
查看>>
bean包 java_BeanUtils工具包操作JavaBean
查看>>
pythonweb自动化如何定位div标签定位div表情_基于Python的Web自动化(Selenium)之元素定位...
查看>>
java jdk-8u152_jdk-8u152-macosx-x86_64-demos java 1.8 代码大全 - 下载 - 搜珍网
查看>>
java反序列化漏洞POP查找_Java反序列化漏洞:在受限环境中从漏洞发现到获取反向Shell...
查看>>
php数组分行输出json_php数组输出这样的json
查看>>
单调队列 笔记
查看>>
8月3号__学习报告
查看>>
jQuery 1.8 Release版本发布了
查看>>
Java读书笔记03 输入输出
查看>>
html5 中的 canvas 绘制椭圆的方法
查看>>
每日英语:Female muscle | Now is not a good time to be a man
查看>>
POJ 3133 Manhattan Wiring
查看>>
vsftpd 3.0.1 正式版发布
查看>>