如何创建.txt文件并将其写入c#asp.net

时间:2014-10-04 07:30:34

标签: c# asp.net text-files

我正在尝试使用以下代码

在C#应用程序中创建和写入文本文件
System.IO.Directory.CreateDirectory(Server.MapPath("~\\count"));

using (System.IO.FileStream fs = new System.IO.FileStream("~/count/count.txt", System.IO.FileMode.Create))
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("~/count/count.txt"))
{
    sw.Write("101");
}

string _count = System.IO.File.ReadAllText("~/count/count.txt");
Application["NoOfVisitors"] = _count;

但是我收到了错误:

  

该过程无法访问文件路径'因为它正被另一个进程使用。

我的错误是什么?

2 个答案:

答案 0 :(得分:8)

您尝试两次打开文件;您的第一个using语句会创建一个未使用的FileStream,但会锁定该文件,因此第二个using会失败。

只需删除您的第一条using行,它一切正常。

但是,我建议您使用File.WriteAllText替换所有内容,然后在您的代码中没有使用它,它会更加简单。

var dir = Server.MapPath("~\\count");
var file = Path.Combine(dir, "count.txt");

Directory.CreateDirectory(dir);
File.WriteAllText(file, "101");

var _count = File.ReadAllText(file);
Application["NoOfVisitors"] = _count;

答案 1 :(得分:0)

private void ExportTextFile()
    {
        #region  This region Used For Private variable.
        string lblName = null;
        string lblACN = null;
        string lblIFSC = null;
        string lblBCode = null;
        string lblAdd1 = null;
        string lblAdd2 = null;
        string lblAdd3 = null;
        string lblMobileNo = null;
        string lblEmai = null;

        #endregion

        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "";
        Response.ContentType = "application/text";
        StringBuilder Rowbind = new StringBuilder();
        for (int i = 0; i < GrdAcc.Rows.Count; i++)
        {
            CheckBox Chk_Status = (CheckBox)GrdAcc.Rows[i].FindControl

("ChkStatus");
            Label lbl_Status = (Label)GrdAcc.Rows[i].FindControl

("lblStatus");
            Label lbl_Code = (Label)GrdAcc.Rows[i].FindControl

("lblEmpCode");
            if (Chk_Status.Checked == true)
            {
                #region Fetching ACC Details From Database.
                AccPL.Status = lbl_Status.Text;
               AccPL.EmpCode = lbl_Code.Text;
                DataTable dt = AccBL.ExportFileAcc(AccPL);
                if (dt.Rows.Count > 0)
                {
                    lblName = dt.Rows[0]["Name"].ToString().Trim();
                    lblACNo = dt.Rows[0]["ACNo"].ToString().Trim();
                    lblBCode = dt.Rows[0]["BCode"].ToString().Trim();
                    lblIFSC = dt.Rows[0]["IFSC"].ToString().Trim();
                    lblAdd1 = dt.Rows[0]["ADd1"].ToString() + dt.Rows[0]

["PPostTehsil"].ToString();
                    lblAdd2 = dt.Rows[0]["Add2"].ToString().Trim() + 

dt.Rows[0]["PPIN"].ToString().Trim();
                    lblAdd3 = dt.Rows[0]["Add3"].ToString() + dt.Rows[0]

["State"].ToString().Trim();
                    lblMobileNo = dt.Rows[0]["MobileNo"].ToString().Trim();
                    lblEmai = dt.Rows[0]["Email"].ToString().Trim();

                }
                #endregion

                #region Generating Text File .
                if (ddlExportType.SelectedValue == "2")
                {

                    Response.AddHeader("content-disposition", " 

attachment;filename=" + DateTime.Now.ToString("ddMMyyhhmmss") + ".txt");
                    Rowbind.Append(lblName + "#" + lblAccNo + "#" + lblIFSC 

+ "#" + "#" + "#" + "#" + "#" + "#" + lbl_Code.Text);


                    Rowbind.Append("\r\n");
                }
                #endregion

               
        Response.Output.Write(Rowbind.ToString());
        Response.Flush();
        Response.End();

    }