IO操作

/// <summary>
 /// 文件读写操作/// </summary>
 public partial class TestIO : DevComponents.DotNetBar.Office2007Form
 {
     public TestIO()
     {
         InitializeComponent();
     }
  
     /// <summary>
     /// 创建文件
     /// </summary>
     private void btnCreateFile_Click(object sender, EventArgs e)
     {
         string path = Application.StartupPath + @"Test.txt";
         FileStream fs = new FileStream(path, FileMode.Create);
         StreamWriter sw = new StreamWriter(fs);
         sw.WriteLine("This is a test file.");
         sw.WriteLine("This is second line.");
         sw.Close();
         fs.Close();
  
         // 也可以这样创建 StreamWriter
         // StreamWriter sw = File.CreateText(path);
     }
  
     /// <summary>
     /// 读取文件
     /// </summary>
     private void btnReadFile_Click(object sender, EventArgs e)
     {
         string path = Application.StartupPath + "\Test.txt";
         textBoxX1.Text = string.Empty;
         if (File.Exists(path))
         {
             FileStream fs = new FileStream(path, FileMode.Open);
             StreamReader sr = new StreamReader(fs);
             // 也可以这样创建 StreamReader
             // File.OpenText(path);
             string str = string.Empty;
             while (true)
             {
                 str = sr.ReadLine();
                 if (!string.IsNullOrEmpty(str))
                 {
                     textBoxX1.Text += str + "
";
                 }
                 else
                 {
                     sr.Close();
                     fs.Close();
                     break;
                 }
             }
         }
         else
         {
             MessageBox.Show("指定的路径下不存在此文件!");
         }
     }
  
     /// <summary>
     /// 追加文件内容
     /// </summary>
     private void btnAppendFile_Click(object sender, EventArgs e)
     {
         string path = Application.StartupPath + "\Test.txt";
         FileStream fs = new FileStream(path, FileMode.Append);
         StreamWriter sw = new StreamWriter(fs);
         // 也可以这样创建 StreamReader
         // StreamWriter sw = File.AppendText(path);
         sw.WriteLine("This is three line.");
         sw.Close();
         fs.Close();
     }
  
     /// <summary>
     /// 复制文件
     /// </summary>
     private void btnCopyFile_Click(object sender, EventArgs e)
     {
         string oldPath = Application.StartupPath + "\Test.txt";
         string newPath = Application.StartupPath + "\TestClone.txt";
         File.Copy(oldPath, newPath);
     }
  
     /// <summary>
     /// 删除文件
     /// </summary>
     private void btnDeleteFile_Click(object sender, EventArgs e)
     {
         string path = Application.StartupPath + "\TestClone.txt";
         File.Delete(path);
     }
  
  
     /// <summary>
     /// 移动文件
     /// </summary>
     private void btnMoveFile_Click(object sender, EventArgs e)
     {
         string oldPath = Application.StartupPath + "\Test.txt";
         // 移动文件的同时也可以使用新的文件名
         string newPath = "d:\NewTest.txt";
         File.Move(oldPath, newPath);
     }
  
     /// <summary>
     /// 创建目录
     /// </summary>
     private void btnCreateDirectory_Click(object sender, EventArgs e)
     {
         string path1 = "d:\Jason1";
         // 创建目录 Jason1
         DirectoryInfo dDepth1 = Directory.CreateDirectory(path1);
         // dDepth2 指向 dDepth1 创建的子目录 Jason2
         DirectoryInfo dDepth2 = dDepth1.CreateSubdirectory("Jason2");
         // 设置应用程序当前的工作目录为 dDepth2 指向的目录
         Directory.SetCurrentDirectory(dDepth2.FullName);
         // 在当前目录创建目录 Jason3
         Directory.CreateDirectory("Jason3");
     }
  
     private void btnDeleteDirectory_Click(object sender, EventArgs e)
     {
         string path = "d:\Jason1";
         DeleteDirectory(path);
     }
  
     /// <summary>
     /// 删除目录及其所有子目录,文件
     /// </summary>
     private static void DeleteDirectory(string path)
     {
         if (Directory.Exists(path))
         {
             foreach (string str in Directory.GetFileSystemEntries(path))
             {
                 if (File.Exists(str))
                 {
                     File.Delete(str);
                 }
                 else
                 {
                     DeleteDirectory(str);
                 }
             }
             Directory.Delete(path);
         }
         else
         {
             MessageBox.Show("该目录不存在!");
         }
     }
  
     private void btnCopyDirectory_Click(object sender, EventArgs e)
     {
         string sourcePath = "d:\Jason1";
         string targetPath = "d:\Jason2";
         CopyDirectory(sourcePath, targetPath);
     }
  
     /// <summary>
     /// 复制目录及其所有内容
     /// </summary>
     /// <param name="sourcePath">源目录</param>
     /// <param name="targetPath">目标目录</param>
     private void CopyDirectory(string sourcePath, string targetPath)
     {
         // 该字符用于在反映分层文件系统组织的路径字符串中分隔目录级别(msdn)
         // 在windows系统下实质上是为目录路径加上"\"
         if (targetPath[targetPath.Length - 1] != Path.DirectorySeparatorChar)
         {
             targetPath += Path.DirectorySeparatorChar;
         }
         // 目标目录不存在则创建之
         if (!Directory.Exists(targetPath))
         {
             Directory.CreateDirectory(targetPath);
         }
         // 获取文件系统(含目录和文件)
         string[] fileList = Directory.GetFileSystemEntries(sourcePath);
         foreach (string fileName in fileList)
         {
             if (Directory.Exists(fileName))
             {
                 // Path.GetFileName(fileName) 可取出最后一个分级目录名或文件名
                 CopyDirectory(fileName, targetPath + Path.GetFileName(fileName));
             }
             else
             {
                 // true 为可覆盖
                 File.Copy(fileName, targetPath + Path.GetFileName(fileName), true);
             }
         }
     }
 }
原文地址:https://www.cnblogs.com/greyhh/p/4763353.html