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


    编辑器加载中...

    //检查文件,如果文件不存在则创建
    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();
                    }



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

    此博客来源http://jhxk.iteye.com/blog/430465

    谢谢分享~~~

  • 相关阅读:
    c++小游戏——2048
    c++小游戏——贪吃蛇
    218 事件处理 on() 绑定事件
    217 jQuery 元素操作:遍历,创建,添加(append、prepend、after、before),删除(remove、empty、html)
    216 jQuery 文本属性值:html() 、text() 、 val()
    215 jQuery 属性操作:prop() 、 attr() 、 data()
    214 jQuery案例:王者荣耀手风琴效果
    213 jQuery 事件切换:hover()
    212 停止动画排队: stop()
    211 jQuery 自定义动画:animate()
  • 原文地址:https://www.cnblogs.com/lstcJaney/p/2287361.html
Copyright © 2020-2023  润新知