asp.net 文件操作

string strPath = Server.MapPath("~/roomindex");


/// <summary>
/// 用递归方法删除文件夹目录及文件
/// </summary>
/// <param name="dir">带文件夹名的路径</param>
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, true); //删除已空文件夹                
}
}

 

确保您具有足够的权限 对路径 的访问被拒绝

删除权限设置:
在web.config中的<system.web>下加入<identity impersonate="true"/>

 

 


/// <summary>
/// 创建文件夹
/// </summary>
/// <param name="Path"></param>
public void FolderCreate(string Path)
{
// 判断目标目录是否存在如果不存在则新建之
if (!Directory.Exists(Path))
   Directory.CreateDirectory(Path);
}

 


遍历文件夹下所有子文件夹,并且遍历配置文件某一节点中所有key,value并且绑定到GridView上
asp.net 遍历文件夹下全部子文件夹,遍历ini配置文件节点下所有key和value,取多行

Helper app_Helper = new Helper();

DataSet ds = new DataSet();

DataTable dt = new DataTable();

protected void Page_Load(object sender, EventArgs e)
{
gvwBind();
}

#region 绑定GridView

/// <summary>
/// 绑定GridView
/// </summary>
protected void gvwBind()
{
INI.INIPath iniINIPath = new INI.INIPath();
   INI.INIFile iniINIFile = new INI.INIFile(iniINIPath.getINIPath());

string FolderNames = app_Helper.GetAllFolder(Server.MapPath("http://www.cnblogs.com/APPDIR"));//获得APPDIR文件夹下所有子文件夹名

string[] FolderName = new string[FolderNames.Split(',').Length - 1];//声明个数组为了保存文件夹绝对路径

FolderName = FolderNames.Split(',');//给文件夹绝对路径数组赋值

dt.Columns.Add("LKNAME", typeof(string));
dt.Columns.Add("qdjsjm", typeof(string));
dt.Columns.Add("qdipdz", typeof(string));

for (int i = 0; i < FolderName.Length - 1; i++)
{
   DataRow row = dt.NewRow();

   FolderName[i] = FolderName[i].Substring(FolderName[i].LastIndexOf('\\') + 1);//截取文件夹名

   row["LKNAME"] = FolderName[i];//给 LKNAME 字符赋值

   if (!iniINIFile.IniReadValue("dzjclkzp", FolderName[i]).Equals(""))//配置文件中是否存在相同文件夹名的key
   {
    row["qdjsjm"] = iniINIFile.IniReadValue("dzjclkzp", FolderName[i]).Split(',')[0];//给qdjsjm字段赋值
    row["qdipdz"] = iniINIFile.IniReadValue("dzjclkzp", FolderName[i]).Split(',')[1];//给qdipdz字段赋值
   }

   dt.Rows.Add(row);
}

gvwGKWH.DataSource = dt;//绑定到数组
gvwGKWH.DataBind();
}






修改文件夹名

protected void Button1_Click(object sender, EventArgs e)

   { try
      {   DirectoryInfo di = new DirectoryInfo(TextBox1.Text);
        if (di.Exists)
        {         di.MoveTo(TextBox2.Text);
          Label1.Text = "修改文件夹名成功!" ;
         }
       }
       catch (Exception error)
       {
          Label1.Text = "失败,原因:" + error.ToString( );
       }
   }


查看文件夹是否存在

protected void Button1_Click(object sender, EventArgs e)
   {
     try
     {
       if (Directory.Exists(TextBox1.Text))
       {
         Label1.Text = "该文件夹存在!";
       }
      else
       {
         Label1.Text = "该文件夹不存在!";
       }
     }
     catch (Exception error)
     {
       Label1.Text = "失败,原因:" + error.ToString( );
     }
   }


图片上传

if (FileUpload1.PostedFile.FileName == "")
        {
            Label1.Text = "您还没有选择图片!";
            return;
        }
        else
        {
            string filepath = FileUpload1.PostedFile.FileName;
            string filename=filepath.Substring(filepath.LastIndexOf("\\")+1);
            string fileEx = filepath.Substring(filepath.LastIndexOf(".") + 1);
            string serverpath = Server.MapPath("File/") + filename;
            if (fileEx == "jpg" || fileEx == "bmp" || fileEx == "gif")
            {
                FileUpload1.PostedFile.SaveAs(serverpath);
                Image1.ImageUrl = "File/" + filename;
                Label1.Text = "上传成功!";
            }
            else
            {
                Label1.Text = "上传的图片扩展名错误!";
            }
        }


单文件上传

protected void Button1_Click(object sender, EventArgs e)
   {
      try
      {
        if (FileUpload1.PostedFile.FileName == "")
        { Label1.Text = "要上传的文件不允许为空!";
          return;
         }
         else
         {
            string filepath = FileUpload1.PostedFile.FileName;
            string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);
            string serverpath = Server.MapPath("File/") + filename;
            FileUpload1.PostedFile.SaveAs(serverpath);
            Label1.Text = "上传成功!";
          }
        }
        catch (Exception error)
        {
           Label1.Text = "处理发生错误!原因:" + error.ToString( );
        }
   }


多文件上传

关键技术
本实例首先通过System.Collections命名空间的ArrayList类存储生成的临时控件,然后应用FileUpload类中的SaveAs方法将文件保存到服务器指定路径中,FileUpload类中的SaveAs方法,其语法格式如下。

public void SaveAs(string filename)

filename:一个字符串,指定服务器上保存上载文件的位置的完整路径。

本实例主要应用该方法的语句如下。

FileUpload1.PostedFile.SaveAs(serverpath);

3.实现过程
(1)新建一个网站,将其命名为Ex12_10,默认主页为Default.aspx.。

(2)在该页中添加1个Table表格、1个FileUpload控件、2个Button控件和1个Label控件,分别用于页面布局、选择上传文件、执行上传操作、添加上传控件和执行状态提示。

(3)主要程序代码如下。

设置首次打开页面时调用SFUPC( )方法,每执行一次就向缓存中添加一个FileUpload控件,代码如下:

    protected void Page_Load(object sender, EventArgs e)
    {
       if (!Page.IsPostBack)//首次执行页面
       {
         SFUPC( );
       }
    }

触发【上传文件】按钮的Click事件,在该事件中调用UpFile( )方法执行文件上传操作,代码如下:

    protected void Button1_Click(object sender, EventArgs e)
    {
       UpFile( );//执行上传文件
    }

触发【添加文件】按钮的Click事件,在该事件中调用InsertC( )方法执行添加上传控件的操作,代码如下:

    protected void Button2_Click(object sender, EventArgs e)
    {
       InsertC( );//执行添加控件方法
    }

定义一个方法SFUPC( ),该方法用于保存当前页面上传文件控件集到缓存中,代码如下:

    private void SFUPC( )
    {
        ArrayList AL = new ArrayList( );//创建动态增加数组
        foreach (Control C in F.Controls)
        {
          if (C.GetType( ).ToString( ) == "System.Web.UI.HtmlControls.HtmlTableRow")
          {
             HtmlTableCell HTC = (HtmlTableCell)C.Controls[0];
             foreach (Control FUC in HTC.Controls)
             {
                if (FUC.GetType( ).ToString( ) == "System.Web.UI.WebControls.FileUpload")
                {
                   FileUpload FU = (FileUpload)FUC;
                   AL.Add(FU);
                 }
              }
          }
        }
        Session.Add("FilesControls", AL);
    }

定义一个方法InsertC( ),该方法用于添加一个上传文件的控件,代码如下:

    private void InsertC( )
    {
      ArrayList AL = new ArrayList( );
      this.F.Rows.Clear( );
      GetInfo( );
      HtmlTableRow HTR = new HtmlTableRow( );
      HtmlTableCell HTC = new HtmlTableCell( );
      HTC.Controls.Add(new FileUpload( ));
      HTR.Controls.Add(HTC);
      F.Rows.Add(HTR);
      SFUPC( );
    }

定义一个方法GetInfo( ),该方法用于读取缓存中存储的上传文件控件集,代码如下:

    private void GetInfo( )
    {
      ArrayList AL = new ArrayList( );
     if (Session["FilesControls"] != null)
      {
        AL = (System.Collections.ArrayList)Session["FilesControls"];
        for (int i = 0; i < AL.Count; i++)
        {
           HtmlTableRow HTR = new HtmlTableRow( );
           HtmlTableCell HTC = new HtmlTableCell( );
           HTC.Controls.Add((System.Web.UI.WebControls.FileUpload)AL[i]);
           HTR.Controls.Add(HTC);
           F.Rows.Add(HTR);
         }
       }
    }

定义一个方法UpFile( ),该方法用于执行文件上传操作,代码如下:

    private void UpFile( )
    {
      string FilePath = Server.MapPath("./") + "File";
       HttpFileCollection HFC = Request.Files;
       for (int i = 0; i < HFC.Count; i++)
       {
         HttpPostedFile UserHPF = HFC[i];
         try
         {
           if (UserHPF.ContentLength > 0)
           {
             UserHPF.SaveAs(FilePath + "\\" + System.IO.Path.GetFileName(UserHPF.FileName));
           }
         }
         catch
         {
           Label1.Text = "处理出错!";
         }
      }

      if (Session["FilesControls"] != null)
      {
        Session.Remove("FilesControls");
      }
      Label1.Text = "上传成功!";
    }

posted @ 2010-08-28 08:58  天亮说晚安  Views(369)  Comments(0)    收藏  举报