现在的位置: 首页 > 综合 > 正文

创建文本后,写入文本,报“正由另一进程使用,因此该进程无法访问该文件”

2013年08月28日 ⁄ 综合 ⁄ 共 2051字 ⁄ 字号 评论关闭

编辑器加载中...

//检查文件,如果文件不存在则创建
private void ExistsFile(string FilePath)
{
//if(!File.Exists(FilePath))
//File.Create(FilePath);
//以上写法会报错,详细解释请看下文.........
if (!File.Exists(FilePath))
{
FileStream fs = File.Create(FilePath);
fs.Close();
}
}
private void Button2_Click(object sender, System.EventArgs e)
{
ExistsFile(Server.MapPath("test/weather.txt"));//检查文件是否存在
//读取文件
StreamReader sr = new StreamReader(Server.MapPath("test/weather.txt"), System.Text.Encoding.Default);

try
{
string input = sr.ReadToEnd();
sr.Close(); <div class="msgfont">//有的平台只有\n表示换行 如 mac,linux之流,windows平台换行使用\r\n
//所以就连.net框架都有一个&nbsp; System.Environment.NewLine; 以实现不同平台的换行.</div>
input = input.Replace("\r\n", "").Replace("\n", ""); //注:\r\n在winform中是换行,在html的文档内换行,显示出来的页面是不会换行的.
this.TextBox1.Text = input;
}
catch
{
Response.Write("<script>alert('文件读取失败');</script>");
}
}

private void Button1_Click(object sender, System.EventArgs e)
{
ExistsFile(Server.MapPath("test/weather.txt"));//检查文件是否存在
//写入文本
StreamWriter sr = new StreamWriter(Server.MapPath("test/weather.txt"),false,System.Text.Encoding.Default);

try
{
sr.Write(this.TextBox1.Text);
sr.Close();
Response.Write("<script>alert('文件写入成功');</script>");
}
catch
{
Response.Write("<script>alert('文件写入失败');</script>");
}
}

错误解释:

//当在指定路径没有文件的时候

//最初的方法:最开始调用

           if (!File.Exists(filePath))
                {
                    File.Create(filePath);
                }

//在进行读写操作的时候:

     private void Button2_Click(object sender, System.EventArgs e)
   {
    ExistsFile(Server.MapPath("test/weather.txt"));//检查文件是否存在
    //读取文件
    StreamReader sr = new StreamReader(Server.MapPath("test/weather.txt"), System.Text.Encoding.Default);

    try
    {
     string input = sr.ReadToEnd();
     sr.Close();
     input = input.Replace("\r\n", "").Replace("\n", "");
     this.TextBox1.Text = input;
    }
    catch
    {
     Response.Write("<script>alert('文件读取失败');</script>");
    }
   }

//就会出现“文件写的时候,正由另一进程使用,因此该进程无法访问该文件”

//分析问题是原因是:File.Create(FilePath); 创建了文件,进程没有结束

//所以该用流创建文件

                if (!File.Exists(filePath))
                {
                    FileStream fs1 = File.Create(filePath);
                    fs1.Close();
                }

//当流创建文件后,关闭流,就不会出现类似的问题了.....

抱歉!评论已关闭.