我想做的就是:如果该文件夹不存在就创建文件夹,如果该文件夹中的该文件不存在就创建该文件,然后在该文件中追加入数据~~代码如下:
Encoder encoder = Encoding.UTF8.GetEncoder();
                StreamWriter sw = null;
                StringBuilder sbLog = new StringBuilder();
                sbLog.Append("记录:");
                sbLog.Append(string.Format("[{0}]:", DateTime.Now.ToString()));
                sbLog.Append(string.Format("操作员[{0}]", ""));
                sbLog.Append(string.Format("操作了功能[{0}],", commandKey));
                sbLog.Append(string.Format("说明[{0}]",description));                if (!Directory.Exists(directoryPath))
                {
                    Directory.CreateDirectory(directoryPath);
                }
                if (!File.Exists(filePath))
                {
                    FileInfo file = new FileInfo(filePath);
                    sw = file.CreateText();
                }
                sw = new StreamWriter(filePath, true, System.Text.Encoding.UTF8);
                sw.WriteLine(sbLog.ToString());
                sw.Close();
现在是每次运行之后就提示“..正由另一进程使用,因此该进程无法访问该文件”
请问这种情况要怎么修改代码才不会出现?

解决方案 »

  1.   

    sw = file.CreateText();
    这句后面加一句
    sw.Close();
      

  2.   

    有点乱。============
    解决 文件写的时候,正由另一进程使用,因此该进程无法访问该文件2008-11-16 18:35当在指定路径没有文件的时候最初的方法:最开始调用                if (!File.Exists(filePath))
                    {
                        File.Create(filePath);
                    }在进行读写操作的时候                StringWriter sw = new StringWriter(sb);
                    FileStream fs2 = new FileStream(filePath, FileMode.Open);
                    byte[] content = Encoding.Default.GetBytes(sb.ToString());
                    fs2.Write(content, 0, content.Length);
                    fs2.Flush();
                    fs2.Close();就会出现“文件写的时候,正由另一进程使用,因此该进程无法访问该文件”分析问题是原因是                FileStream fs2 = new FileStream(filePath, FileMode.Open);本身就可以创建新文件,但是前面已经创建了文件,进程没有结束所以该用流创建文件                if (!File.Exists(filePath))
                    {
                        FileStream fs1 = File.Create(filePath);
                        fs1.Close();
                    }当流创建文件后,关闭流,就不会出现类似的问题