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

    编辑器加载中...

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

    谢谢分享~~~

  • 相关阅读:
    Netty快速入门(09)channel组件介绍
    Netty快速入门(08)ByteBuf组件介绍
    Netty快速入门(07)Netty入门例子
    Netty快速入门(06)Netty介绍
    Netty快速入门(05)Java NIO 介绍-Selector
    Netty快速入门(04)Java NIO 介绍-Channel
    Netty快速入门(03)Java NIO 介绍-Buffer
    Netty快速入门(02)Java I/O(BIO)介绍
    Netty快速入门(01)Linux I/O模型介绍
    老虎集团【4面】
  • 原文地址:https://www.cnblogs.com/lstcJaney/p/2287361.html
Copyright © 2011-2022 走看看