C# 将现有文件删除到特定文件夹

C# 将现有文件删除到特定文件夹,c#,C#,你好 我创建了一个简单的web应用程序,可以将.csv文件保存到web应用程序上的特定文件夹中。但是我的代码中有一些东西没有保存到特定文件夹中。我需要将该.csv文件保存到该文件夹中 这是我的密码 protected void btnERSFRSWRSQuery_Click(object sender, EventArgs e) { grdQueryTotal.DataSource = _dVizOutputBll.GetE

你好

我创建了一个简单的web应用程序,可以将.csv文件保存到web应用程序上的特定文件夹中。但是我的代码中有一些东西没有保存到特定文件夹中。我需要将该.csv文件保存到该文件夹中

这是我的密码

        protected void btnERSFRSWRSQuery_Click(object sender, EventArgs e)
             {
             grdQueryTotal.DataSource =   _dVizOutputBll.GetERSFRSQRSQueryResultList(_totalValueTableEntities);
            grdQueryTotal.DataBind();

       string fname = "ERSFRSWRSQueryTotal.csv";

        string fLocation = HttpContext.Current.Server.MapPath("/data/" + fname);
        StreamWriter sw = new StreamWriter(fLocation,true); //("C:\\Users\\jessr\\Desktop\\GTML\\GTML\\WebApplication1\\data\\gridview.csv");



        //if (File.Exists(fname))
        //{

        //    File.Delete(fname);
        //    sw.Close();
        //}
        //else
        //{

            for (int i = 0; i < grdQueryTotal.Columns.Count; i++)
            {
                sw.Write(grdQueryTotal.Columns[i].HeaderText);
                if (i != grdQueryTotal.Columns.Count)
                {
                    sw.Write(",");
                }
            }
            // add new line
            sw.Write(sw.NewLine);
            // iterate through all the rows within the gridview
            foreach (GridViewRow dr in grdQueryTotal.Rows)
            {
                // iterate through all colums of specific row
                for (int i = 0; i < grdQueryTotal.Columns.Count; i++)
                {
                    // write particular cell to csv file
                    sw.Write(dr.Cells[i].Text);
                    if (i != grdQueryTotal.Columns.Count)
                    {
                        sw.Write(",");
                    }
                }
                // write new line
                sw.Write(sw.NewLine);
            }

            // flush from the buffers.
            sw.Flush();
            // closes the file
            sw.Close();
        //}
    }
}
protectedvoid btnERSFRSWRSQuery\u单击(对象发送方,事件参数e)
{
grdQueryTotal.DataSource=_dVizOutputBll.GetersFrSqrQueryResultList(_totalValueTableEntities);
grdQueryTotal.DataBind();
字符串fname=“ersfrsquerytotal.csv”;
字符串fLocation=HttpContext.Current.Server.MapPath(“/data/”+fname);
StreamWriter sw=newstreamwriter(fLocation,true);/(“C:\\Users\\jessr\\Desktop\\GTML\\GTML\\WebApplication1\\data\\gridview.csv”);
//if(File.Exists(fname))
//{
//文件。删除(fname);
//sw.Close();
//}
//否则
//{
对于(int i=0;i

但首先,我将检查csv文件是否已存在于我的目标文件夹中如果存在,我将删除它,如果不存在,则我将保存一个新的csv文件,如果您将
“/data/”
替换为
“~/data/”
,如果
数据
确实是web应用文件夹中某个文件夹的名称,您应该不会有问题。

您需要使用
波浪线
操作符来表示当前项目的
文件夹

试试这个:

string fLocation = HttpContext.Current.Server.MapPath("~/data/" + fname);
注意:确保数据文件夹位于
根文件夹中

删除文件:

       if(File.Exists(fLocation))
        {    
            File.Delete(fname);
            sw.Close();
        }

使用AppDomain.CurrentDomain

System.IO.Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "FolderName/")

删除代码的问题在于您使用的是
File.Exists(fname)
。您的程序不知道
fname
在哪里,您需要文件的完整路径,
fLocation

您的标题非常混乱……还有问题。无论如何,是否要将文件保存到任意文件夹?除非您向ASP.NET用户授予更多权限(因为它不能在IIS文件夹之外进行写入),否则您不能这样做。如果path仍然在您的虚拟目录中,请不要忘记tilde。您发布的代码也非常混乱。删除注释掉的部分,以便我们可以看到工作代码。另外,修复格式。它仍然是一样的。它不会保存在那个文件夹中..如果我运行我的应用程序并调试代码。它运行正常,但是如果我在解决方案资源管理器上查看文件夹,文件不在那里,但是当我在物理路径上浏览时,文件在那里..这是正常的。在解决方案资源管理器中,只能看到添加到解决方案中的文件。仅因为文件保存在文件夹中,不会将其添加到解决方案中。好的,但我可以在该文件夹中再次访问该文件吗?如果文件夹中的文件已经存在,我如何删除该文件?我被注释的代码有什么问题。。它不会删除存在的文件。是的,您可以删除创建的文件,即使该文件未出现在解决方案资源管理器中。这意味着除非文件实际存在,否则您可以将其删除。@CyberDaemon:注释的删除文件代码没有问题,您没有为文件提供正确的路径。Exists(),您需要将fLocation作为路径变量而不是fname传递,请检查我的答案以获取删除代码。它仍然是一样的。它不会保存在那个文件夹中..如果我运行我的应用程序并调试代码。它运行正常,但如果我在解决方案资源管理器上查看文件夹,文件不在那里,但当我在物理路径上浏览时,文件在那里..在解决方案资源管理器的顶部有一个按钮,显示隐藏。这意味着它工作正常,但您无法使用解决方案资源管理器查看..按@Arun所说的那样尝试。解决方案资源管理器不会添加这样的文件,解决方案资源管理器探索解决方案,而不是物理目录。要向解决方案添加内容,请右键单击文件夹,选择“添加现有”并浏览到您的文件。我尝试了您的建议,效果良好。如果文件存在,则删除该文件,但当文件不存在时,程序不会进入else语句。@CyberDaemon这是因为在执行
文件.exists
检查之前,您创建了streamwriter,从而创建了该文件,因此该文件将始终存在。删除现有文件后,在else子句中创建
StreamWriter