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