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

本文共 4308 字,大约阅读时间需要 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; } }}

 

 

转载于:https://www.cnblogs.com/pangblog/p/3278492.html

你可能感兴趣的文章
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>
ServiceStack 介绍
查看>>
Centos7下载和安装教程
查看>>
无谓的通宵加班之后的思索
查看>>
S1的小成果:MyKTV系统
查看>>
从setting文件导包
查看>>
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
union和union all
查看>>
Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
查看>>
PMD使用提醒
查看>>
Codeforces 887D Ratings and Reality Shows
查看>>
论文《A Generative Entity-Mention Model for Linking Entities with Knowledge Base》
查看>>
CentOS 6.7编译安装PHP 5.6
查看>>
Linux记录-salt分析
查看>>
Android Studio默认快捷键
查看>>
发布开源库到JCenter所遇到的一些问题记录
查看>>
第七周作业
查看>>