C# 添加,修改,删除文件夹/文件集合

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
//  测试的时候要小心操作,删除之后无法恢复。
//  April 18April2005 In STU
//  ======================================================
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>
///  拷贝文件夹(包括子文件夹)到指定文件夹下,源文件夹和目标文件夹均需绝对路径. 格式: CopyFolder(源文件夹,目标文件夹);
///   </summary>
///   <param name="strFromPath"></param>
///   <param name="strToPath"></param>

// --------------------------------------------------
// 作者:明天去要饭 QQ:305725744
// ---------------------------------------------------

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 name="input"></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);
        
        
/**/ /// 写入“Log Entry : ”
        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();
    }
}
复制代码

五.创建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());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值