美好的一天,
我创建了一个简单的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();
//}
}
}
但首先我将检查csv文件是否已存在于我的目标文件夹中(如果存在)我将删除它,否则我将保存新的csv文件
答案 0 :(得分:1)
如果您将"/data/"
替换为"~/data/"
,那么您应该没问题 - 如果data
确实是您网络应用程序文件夹中文件夹的名称。
答案 1 :(得分:1)
您需要使用tilde
运算符来表示当前的Project root
文件夹。
试试这个:
string fLocation = HttpContext.Current.Server.MapPath("~/data/" + fname);
注意:确保数据文件夹位于root
文件夹
删除文件:
if(File.Exists(fLocation))
{
File.Delete(fname);
sw.Close();
}
答案 2 :(得分:0)
使用AppDomain.CurrentDomain
System.IO.Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "FolderName/")
答案 3 :(得分:0)
删除代码的问题在于您使用的是File.Exists(fname)
。您的程序不知道fname
的位置,您需要文件的完整路径fLocation
。