本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内容Detele、读取文本文件、获取文件列表、读取日志文件、写入日志文件、创建HTML 文件、CreateDirectory方法的使用
C#追加文件 
    StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt"); 
    sw.WriteLine("追逐理想"); 
    sw.WriteLine("kzlll"); 
    sw.WriteLine(".NET笔记"); 
    sw.Flush(); 
    sw.Close(); 
C#拷贝文件 
    string OrignFile,NewFile; 
    OrignFile = Server.MapPath(".")+"\\myText.txt"; 
    NewFile = Server.MapPath(".")+"\\myTextCopy.txt"; 
    File.Copy(OrignFile,NewFile,true); 
C#删除文件 
    string delFile = Server.MapPath(".")+"\\myTextCopy.txt"; 
    File.Delete(delFile); 
C#移动文件 
    string OrignFile,NewFile; 
    OrignFile = Server.MapPath(".")+"\\myText.txt"; 
    NewFile = Server.MapPath(".")+"\\myTextCopy.txt"; 
    File.Move(OrignFile,NewFile); 
C#创建目录 
// 创建目录c:\sixAge 
    DirectoryInfo d=Directory.CreateDirectory("c:\\sixAge"); 
// d1指向c:\sixAge\sixAge1 
    DirectoryInfo d1=d.CreateSubdirectory("sixAge1"); 
// d2指向c:\sixAge\sixAge1\sixAge1_1 
    DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1"); 
// 将当前目录设为c:\sixAge 
    Directory.SetCurrentDirectory("c:\\sixAge"); 
// 创建目录c:\sixAge\sixAge2 
    Directory.CreateDirectory("sixAge2"); 
// 创建目录c:\sixAge\sixAge2\sixAge2_1 
    Directory.CreateDirectory("sixAge2\\sixAge2_1"); 
递归删除文件夹及文件 
  <%@ Page Language=C#%> 
  <%@ Import namespace="System.IO"%> 
  <script_ runat=server> 
  public void DeleteFolder(string dir) 
  { 
    if (Directory.Exists(dir)) //如果存在这个文件夹删除之 
    { 
      foreach(string d in Directory.GetFileSystemEntries(dir)) 
      { 
        if(File.Exists(d)) 
          File.Delete(d); //直接删除其中的文件 
        else 
          DeleteFolder(d); //递归删除子文件夹 
      } 
      Directory.Delete(dir); //删除已空文件夹 
      Response.Write(dir+" 文件夹删除成功"); 
    } 
    else 
      Response.Write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示 
  } 
  protected void Page_Load (Object sender ,EventArgs e) 
  { 
    string Dir="D:\\gbook\\11"; 
    DeleteFolder(Dir); //调用函数删除文件夹 
  }

// ======================================================
// 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面
// 如果目标文件夹为只读属性就会报错
// April 18April2005 In STU
// ======================================================
  public static void CopyDir(string srcPath,string aimPath)
  {
    try
    {
      // 检查目标目录是否以目录分割字符结束如果不是则添加之
      if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar) 
        aimPath += Path.DirectorySeparatorChar;
      // 判断目标目录是否存在如果不存在则新建之
      if(!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath);
      // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
      // 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
      // string[] fileList = Directory.GetFiles(srcPath);
      string[] fileList = Directory.GetFileSystemEntries(srcPath);
      // 遍历所有的文件和目录
      foreach(string file in fileList)
      {
        // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
        if(Directory.Exists(file))
          CopyDir(file,aimPath+Path.GetFileName(file));
        // 否则直接Copy文件
        else
          File.Copy(file,aimPath+Path.GetFileName(file),true);
      }
    }
    catch (Exception e)
    {
      MessageBox.Show (e.ToString());
    }
  } 
// ======================================================
// 实现一个静态方法将指定文件夹下面的所有内容Detele
// 测试的时候要小心操作,删除之后无法恢复。
// ======================================================
  public static void DeleteDir(string aimPath)
  {
    try
    {
      // 检查目标目录是否以目录分割字符结束如果不是则添加之
      if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar) 
        aimPath += Path.DirectorySeparatorChar;
      // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
      // 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法
      // string[] fileList = Directory.GetFiles(aimPath);
      string[] fileList = Directory.GetFileSystemEntries(aimPath);
      // 遍历所有的文件和目录
      foreach(string file in fileList)
      {
        // 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件
        if(Directory.Exists(file))
        {
          DeleteDir(aimPath+Path.GetFileName(file));
        }
        // 否则直接Delete文件
        else
        {
          File.Delete (aimPath+Path.GetFileName(file));
        }
      }
    //删除文件夹
    System.IO .Directory .Delete (aimPath,true);
    }
    catch (Exception e)
    {
      MessageBox.Show (e.ToString());
    }
  }
需要引用命名空间:
using System.IO;
/**//// <summary>

/// </summary>
/// <param ></param>
/// <param ></param>
//--------------------------------------------------
//---------------------------------------------------
public static void CopyFolder(string strFromPath,string strToPath)
{
    //如果源文件夹不存在,则创建
  if (!Directory.Exists(strFromPath))
  { 
    Directory.CreateDirectory(strFromPath);
  } 
  //取得要拷贝的文件夹名
  string strFolderName = strFromPath.Substring(strFromPath.LastIndexOf("\\") + 1,strFromPath.Length - strFromPath.LastIndexOf("\\") - 1); 
  //如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹
  if (!Directory.Exists(strToPath + "\\" + strFolderName))
  { 
    Directory.CreateDirectory(strToPath + "\\" + strFolderName);
  }
  //创建数组保存源文件夹下的文件名
  string[] strFiles = Directory.GetFiles(strFromPath);
  //循环拷贝文件
  for(int i = 0;i < strFiles.Length;i++)
  {
  //取得拷贝的文件名,只取文件名,地址截掉。
  string strFileName = strFiles[i].Substring(strFiles[i].LastIndexOf("\\") + 1,strFiles[i].Length - strFiles[i].LastIndexOf("\\") - 1);
  //开始拷贝文件,true表示覆盖同名文件
  File.Copy(strFiles[i],strToPath + "\\" + strFolderName + "\\" + strFileName,true);
  }

  //创建DirectoryInfo实例
  DirectoryInfo dirInfo = new DirectoryInfo(strFromPath);
  //取得源文件夹下的所有子文件夹名称
  DirectoryInfo[] ZiPath = dirInfo.GetDirectories();
  for (int j = 0;j < ZiPath.Length;j++)
  {
    //获取所有子文件夹名
    string strZiPath = strFromPath + "\\" + ZiPath[j].ToString(); 
    //把得到的子文件夹当成新的源文件夹,从头开始新一轮的拷贝
    CopyFolder(strZiPath,strToPath + "\\" + strFolderName);
  }
}
一.读取文本文件
 /**//// <summary>
 /// 读取文本文件
 /// </summary>
 private void ReadFromTxtFile()
 {
    if(filePath.PostedFile.FileName != "")
    {
      txtFilePath =filePath.PostedFile.FileName;
      fileExtName = txtFilePath.Substring(txtFilePath.LastIndexOf(".")+1,3);
 
      if(fileExtName !="txt" && fileExtName != "TXT")
      {
      Response.Write("请选择文本文件");
      }
      else
      {
      StreamReader fileStream = new StreamReader(txtFilePath,Encoding.Default);
      txtContent.Text = fileStream.ReadToEnd();
      fileStream.Close();
     }
    }
  }
二.获取文件列表
/**//// <summary>
/// 获取文件列表
/// </summary>
private void GetFileList()
{
  string strCurDir,FileName,FileExt;

  /**////文件大小
  long FileSize;

  /**////最后修改时间;
  DateTime FileModify;

  /**////初始化
  if(!IsPostBack)
  {
    /**////初始化时,默认为当前页面所在的目录
    strCurDir = Server.MapPath(".");
    lblCurDir.Text = strCurDir;
    txtCurDir.Text = strCurDir;
  }
  else
  {
    strCurDir = txtCurDir.Text;
    txtCurDir.Text = strCurDir;
    lblCurDir.Text = strCurDir;
  }
  FileInfo fi;
  DirectoryInfo dir;
  TableCell td;
  TableRow tr;
  tr = new TableRow();

  /**////动态添加单元格内容
  td = new TableCell();
  td.Controls.Add(new LiteralControl("文件名"));
  tr.Cells.Add(td);
  td = new TableCell();
  td.Controls.Add(new LiteralControl("文件类型"));
  tr.Cells.Add(td);
  td = new TableCell();
  td.Controls.Add(new LiteralControl("文件大小"));
  tr.Cells.Add(td);
  td = new TableCell();
  td.Controls.Add(new LiteralControl("最后修改时间"));
  tr.Cells.Add(td);

  tableDirInfo.Rows.Add(tr);

  /**////针对当前目录建立目录引用对象
  DirectoryInfo dirInfo = new DirectoryInfo(txtCurDir.Text);

  /**////循环判断当前目录下的文件和目录
  foreach(FileSystemInfo fsi in dirInfo.GetFileSystemInfos())
  {
    FileName = "";
    FileExt = "";
    FileSize = 0;

    /**////如果是文件
    if(fsi is FileInfo)
    {
      fi = (FileInfo)fsi;

      /**////取得文件名
      FileName = fi.Name;

      /**////取得文件的扩展名
      FileExt = fi.Extension;

      /**////取得文件的大小
      FileSize = fi.Length;

      /**////取得文件的最后修改时间
      FileModify = fi.LastWriteTime;
    }

      /**////否则是目录
    else
    {
      dir = (DirectoryInfo)fsi;

      /**////取得目录名
      FileName = dir.Name;

      /**////取得目录的最后修改时间
      FileModify = dir.LastWriteTime;

      /**////设置文件的扩展名为"文件夹"
      FileExt = "文件夹";
    }

    /**////动态添加表格内容
    tr = new TableRow();
    td = new TableCell();
    td.Controls.Add(new LiteralControl(FileName));
    tr.Cells.Add(td);
    td = new TableCell();
    td.Controls.Add(new LiteralControl(FileExt));
    tr.Cells.Add(td);
    td = new TableCell();
    td.Controls.Add(new LiteralControl(FileSize.ToString()+"字节"));
    tr.Cells.Add(td);
    td = new TableCell();
    td.Controls.Add(new LiteralControl(FileModify.ToString("yyyy-mm-dd hh:mm:ss")));
    tr.Cells.Add(td);
    tableDirInfo.Rows.Add(tr);
  }

三.读取日志文件
/**//// <summary>
/// 读取日志文件
/// </summary>
private void ReadLogFile()
{
  /**////从指定的目录以打开或者创建的形式读取日志文件
  FileStream fs = new FileStream(Server.MapPath("upedFile")+"\\logfile.txt", FileMode.OpenOrCreate, FileAccess.Read);

  /**////定义输出字符串
  StringBuilder output = new StringBuilder();

  /**////初始化该字符串的长度为0
  output.Length = 0;

  /**////为上面创建的文件流创建读取数据流
  StreamReader read = new StreamReader(fs);

  /**////设置当前流的起始位置为文件流的起始点
  read.BaseStream.Seek(0, SeekOrigin.Begin);

  /**////读取文件
  while (read.Peek() > -1) 
  {
    /**////取文件的一行内容并换行
    output.Append(read.ReadLine() + "\n");
  }

  /**////关闭释放读数据流
  read.Close();

  /**////返回读到的日志文件内容
  return output.ToString();
}
四.写入日志文件

/**//// <summary>
/// 写入日志文件
/// </summary>
/// <param ></param>
private void WriteLogFile(string input)

  /**////指定日志文件的目录
  string fname = Server.MapPath("upedFile") + "\\logfile.txt";
  /**////定义文件信息对象
  FileInfo finfo = new FileInfo(fname);

  /**////判断文件是否存在以及是否大于2K
  if ( finfo.Exists && finfo.Length > 2048 )
  {
    /**////删除该文件
    finfo.Delete();
  }
  /**////创建只写文件流
  using(FileStream fs = finfo.OpenWrite())
  {
    /**////根据上面创建的文件流创建写数据流
    StreamWriter w = new StreamWriter(fs);

    /**////设置写数据流的起始位置为文件流的末尾
    w.BaseStream.Seek(0, SeekOrigin.End);

    w.Write("\nLog Entry : ");

    /**////写入当前系统时间并换行
    w.Write("{0} {1} \r\n",DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());

    /**////写入日志内容并换行
    w.Write(input + "\n");

    /**////写入------------------------------------“并换行
    w.Write("------------------------------------\n");

    /**////清空缓冲区内容,并把缓冲区内容写入基础流
    w.Flush();

    /**////关闭写数据流
    w.Close();
  }
}
五.C#创建HTML文件
/**//// <summary>
/// 创建HTML文件
/// </summary>
private void CreateHtmlFile()

  /**////定义和html标记数目一致的数组
  string[] newContent = new string[5];
  StringBuilder strhtml = new StringBuilder();
  try 
  {
    /**////创建StreamReader对象
    using (StreamReader sr = new StreamReader(Server.MapPath("createHTML") + "\\template.html")) 
    {
      String oneline;

      /**////读取指定的HTML文件模板
      while ((oneline = sr.ReadLine()) != null) 
      {
        strhtml.Append(oneline);
      }
      sr.Close();
    }
  }
  catch(Exception err)
  {
    /**////输出异常信息
    Response.Write(err.ToString());
  }
  /**////为标记数组赋值
  newContent[0] = txtTitle.Text;//标题
  newContent[1] = "BackColor='#cccfff'";//背景色
  newContent[2] = "#ff0000";//字体颜色
  newContent[3] = "100px";//字体大小
  newContent[4] = txtContent.Text;//主要内容

  /**////根据上面新的内容生成html文件
  try
  {
    /**////指定要生成的HTML文件
    string fname = Server.MapPath("createHTML") +"\\" + DateTime.Now.ToString("yyyymmddhhmmss") + ".html";

    /**////替换html模版文件里的标记为新的内容
    for(int i=0;i < 5;i++)
    {
      strhtml.Replace("$htmlkey["+i+"]",newContent[i]);
    }
    /**////创建文件信息对象
    FileInfo finfo = new FileInfo(fname);

    /**////以打开或者写入的形式创建文件流
    using(FileStream fs = finfo.OpenWrite())
    {
      /**////根据上面创建的文件流创建写数据流
      StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));

      /**////把新的内容写到创建的HTML页面中
      sw.WriteLine(strhtml);
      sw.Flush();
      sw.Close();
    }

    /**////设置超级链接的属性
    hyCreateFile.Text = DateTime.Now.ToString("yyyymmddhhmmss")+".html";
    hyCreateFile.NavigateUrl = "createHTML/"+DateTime.Now.ToString("yyyymmddhhmmss")+".html";
  }
  catch(Exception err)
  { 
    Response.Write (err.ToString());
  }
}
CreateDirectory方法的使用
using System; 
using System.IO;

class Test 

  public static void Main() 
  { 
    // Specify the directory you want to manipulate. 
    string path = @"c:\MyDir";

    try 
    { 
      // Determine whether the directory exists. 
      if (Directory.Exists(path)) 
      { 
        Console.WriteLine("That path exists already."); 
        return; 
      }

      // Try to create the directory. 
      DirectoryInfo di = Directory.CreateDirectory(path); 
      Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path));

      // Delete the directory. 
      di.Delete(); 
      Console.WriteLine("The directory was deleted successfully."); 
    } 
    catch (Exception e) 
    { 
      Console.WriteLine("The process failed: {0}", e.ToString()); 
    } 
    finally {} 
  } 
}

C#操作文件夹及文件的方法的使用的更多相关文章

  1. Python文件夹与文件的操作(转)

    最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模 ...

  2. Python文件夹与文件的操作 ZZ

    最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模 ...

  3. Atitit.跨语言  文件夹与文件的io操作集合  草案

    Atitit.跨语言  文件夹与文件的io操作集合  草案 1. Jdk原生的太难用了..1 2. PS: apache commons-io包,FileUtils有相关的方法,IOUtils一般是拷 ...

  4. C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....

    本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下 面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内 ...

  5. Windows phone开发之文件夹与文件操作系列(一)文件夹与文件操作

    Windows phone7中文件的存储模式是独立的,即独立存储空间(IsolatedStorage).对文件夹与文件操作,需要借助IsolatedStorageFile类. IsolatedStor ...

  6. Linux中在主机上实现对备机上文件夹及文件的操作的C代码实现

    需求描写叙述 编敲代码.完毕在主机上实现对备机上文件夹及文件的操作. 比如,主机为A,备机为B,要求编写的程序运行在A机上,该程序实如今B机上创建文件文件夹及复制文件的操作. 需求分析 我们先不考虑用 ...

  7. python文件夹遍历,文件操作,获取文件修改创建时间

    在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前 ...

  8. 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇

    本文是Java IO总结系列篇的第3篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...

  9. TortoiseSVN文件夹及文件图标不显示解决方法

              由于自己的电脑是win7(64位)的,系统安装TortoiseSVN之后,其他的功能都能正常的使用,但是就是文件夹或文件夹的左下角就是不显示图标,这个问题前一段时间就遇到了(那个时 ...

随机推荐

  1. html5 web database

    html5 web database <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  2. 汇编学习(五)——表处理程序

    (一)串操作指令及重复前缀 一.串操作指令: 1.串传送指令: (1)指令格式: MOVS dst,rsc MOVSB ;ES:[DI]<--DS:[SI],SI<-SI+/-,DI< ...

  3. 使用android ProgressBar和Toast生成一个界面

    首先我需要这样一个界面 这个界面是在使用AudioManager.adjustStreamVolume(int streamType, int direction, int flags)显示出来的,记 ...

  4. Apache Kafka for Item Setup

    At Walmart.com in the U.S. and at Walmart's 11 other websites around the world, we provide seamless ...

  5. 关于C/C++中数组元素的初始化

      1.一维数组初始化 对于一维数组,其初始化有一个错误的观点是:一直以为 int a[256]={0};是把a的所有元素初始化为0,int a[256]={1};是把a所有的元素初始化为1. 数组可 ...

  6. javascript同名变量

    我写个流程:在流程之前,必须写一下标识符是啥. 一句话,就是variable object的属性.而这个对象会被不同执行环境来决定. 比如全局环境下的variable object 就是 global ...

  7. 遍历table指定name的td

    $("td[name='rates']").each(function () { var temp = $(this).text().substr(0,$(this).text() ...

  8. 线段树(区间合并) LA 3989 "Ray, Pass me the dishes!"

    题目传送门 题意:动态最大连续子序列和,静态的题目 分析:nlogn的归并思想.线段树维护结点的三个信息,最大前缀和,最大后缀和,该区间的最大和的两个端点,然后答案是三个的better.书上用pair ...

  9. Android定位方式和测试方法

    Android常用的三种定位方式有:基于GPS定位.基于基站地位.基于wifi定位. 1.基于GPS定位: GPS定位需要GPS模块(硬件)的支持,没有GPS模块是无法进行GPS定位的. GPS定位最 ...

  10. HDU5727 Necklace(枚举 + 二分图最大匹配)

    题目大概说有n个yang珠子n个yin珠子,要交替串成一个环形项链,有些yang珠子和某个yin珠子相邻这个yang珠子会不高兴,问最少有几个yang珠子不高兴. 自然会想到直接用状压DP去解,转移很 ...