Chapter 11. WinForm-文件及文件夹操作
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace 文件及文件夹操作 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //定义成员变量实例化文件 FileInfo f = new FileInfo("E:\\aa.txt"); private void button1_Click(object sender, EventArgs e) { //创建文件 FileStream s = f.Create(); s.Close(); string fname = f.FullName; //获取全路径 string name = f.Name; //获取文件名 DateTime d1 = f.CreationTime; //获取创建时间 DateTime d2 = f.LastAccessTime; //获取最后访问时间 DateTime d3 = f.LastWriteTime; //获取最后修改时间 f.CreationTime = DateTime.Now; //修改创建时间 string length = f.Length.ToString(); //获取文件大小 richTextBox1.Text = "创建成功\n文件名:" + name + "\n路径名:" + fname + "\n创建时间:" + d1 + "\n修改创建时间:" + f.CreationTime + "\n最后访问时间:" + d2 + "\n最后修改时间:" + d3 + "\n文件大小:" + length; }
private void button2_Click(object sender, EventArgs e) { //移动文件 f.MoveTo("D:\\aa.txt"); //判断移动后的文件是否存在 bool b = f.Exists; if (b) { MessageBox.Show("移动成功"); } else { MessageBox.Show("移动失败"); } }
private void button3_Click(object sender, EventArgs e) { //复制文件 f.CopyTo("C:\\aa.txt"); //判断复制的文件是否存在 bool b = f.Exists; if (b) { MessageBox.Show("复制成功"); } else { MessageBox.Show("复制失败"); } }
private void button4_Click(object sender, EventArgs e) { //删除文件 f.Delete(); bool b = f.Exists; if (b) { MessageBox.Show("删除成功"); } else { MessageBox.Show("文件不存在,删除失败"); } }
#region 1.给一个文件夹,获取所有文件数量 //定义成员变量来接受文件数量 private int fcount = 0; /// <summary> /// 获取文件数量的方法 /// </summary> /// <param name="path">当前文件夹路径</param> /// <returns>所有文件数量</returns> private int FileCount(string path) { //实例化当前文件夹对象 DirectoryInfo d = new DirectoryInfo(path); //获取当前文件夹下所有文件的数量 fcount += d.GetFiles().Length; //获取当前文件夹下所有的文件夹 foreach (DirectoryInfo data in d.GetDirectories()) { //递归获取所有文件夹中的文件数量 FileCount(data.FullName); } return fcount; } private void button5_Click(object sender, EventArgs e) { textBox1.Text = FileCount(@"E:\BaiduYunDownload").ToString(); } #endregion
#region 2.给一个文件夹,获取所有文件夹数量 //定义成语变量来接收文件夹数量 private int dcount = 0; /// <summary> /// 获取当前文件夹中所有文件夹数量 /// </summary> /// <param name="path">文件夹路径</param> /// <returns>文件夹数量</returns> private int DirCount(string path) { //实例化当前文件夹对象 DirectoryInfo d = new DirectoryInfo(path); //获取当前文件夹中的子文件夹数量 dcount += d.GetDirectories().Length; //获取当前文件夹中的子文件夹 foreach (DirectoryInfo data in d.GetDirectories()) { //递归获取子文件夹中文件夹的数量 DirCount(data.FullName); } return dcount; } private void button6_Click(object sender, EventArgs e) { textBox2.Text = DirCount("E:\\BaiduYunDownload").ToString(); } #endregion
#region 3.给一个文件夹,获取该文件夹大小 //定义成员变量来接受文件夹大小 private long size = 0; /// <summary> /// 获取文件夹大小的方法 /// </summary> /// <param name="path">文件夹路径</param> /// <returns>文件夹大小</returns> private long Size(string path) { //实例化当前文件夹的对象 DirectoryInfo d = new DirectoryInfo(path); //获取当前文件夹下的所有文件 foreach (FileInfo dataf in d.GetFiles()) { //获取当前文件夹下的所有文件的大小 size += dataf.Length; } //获取当前文件夹下的所有子文件夹 foreach (DirectoryInfo datad in d.GetDirectories()) { //递归调用方法获取文件大小 Size(datad.FullName); } return size; } private void button7_Click(object sender, EventArgs e) { textBox3.Text = Size("E:\\BaiduYunDownload").ToString() + "字节"; } #endregion
#region 4.给一个文件夹,删除该文件夹 /// <summary> /// 删除文件夹方法 /// </summary> /// <param name="path">文件夹路径</param> private void Delete(string path) { //实例化当前文件夹 DirectoryInfo d = new DirectoryInfo(path); //获取当前文件夹下所有的文件 foreach (FileInfo dataf in d.GetFiles()) { //删除当前文件夹下的所有文件 dataf.Delete(); } //获取当前文件夹下的所有文件夹 foreach (DirectoryInfo datad in d.GetDirectories()) { //递归删除子文件夹的文件 Delete(datad.FullName); } //删除当前空文件夹 d.Delete(); } private void button8_Click(object sender, EventArgs e) { DirectoryInfo d = new DirectoryInfo(@"E:\BaiduYunDownload\accelerate"); //判断该文件夹是否存在 bool b = d.Exists; if (b) { Delete(@"E:\BaiduYunDownload\.accelerate"); } else { MessageBox.Show("未找到路径为" + @"E:\BaiduYunDownload\accelerate" + "的文件夹"); } }
#endregion } }