这段代码就是获取一个页面的Html代码,写到指定的文件夹里,代码如下:
public bool SaveHtml(string url, string path)
        {
          try
            {
                
                EnsurePath(path);  //这个函数就是确保 path 中的文件夹是存在的.                             string html = getHtmlText(url);
                
                //这里写文件
                StreamWriter wr = new StreamWriter(filePath, false, Encoding.GetEncoding("gb2312"));
                wr.Write(html);
                wr.Flush();
                wr.Close();                return true;
            }
            catch (Exception ex)
            {                             //往系统的日志里写出错信息
                LogHelper.WriteErrorMessage("出错:" + ex.Message + "\nStackTrace:" + ex.StackTrace + "\nSource:" + ex.Source + "\nURL:" + url + "\n存储路径:" + path);
                return false;
            }
        }       /// <summary>
        /// 确保路径里的文件夹是存在的,不存在,就创建
        /// </summary>
        /// <param name="Inpath"></param>
        public void EnsurePath(string Inpath)
        {
            string[] pathSplit = Inpath.Split('\\');
            string path = pathSplit[0] + "\\" + pathSplit[1];
            for (int i = 2; i < pathSplit.Length - 1; i++)
            {
                path += "\\" + pathSplit[i];
                if (!Directory.Exists(path))
                    Directory.CreateDirectory(path);
            }
        }
SaveHtml()函数是被循环调用的,大部分时候是好的,但是到了某个文件夹的时候就老是出现  无法创建目录或文件
在出现错误的时候,这个目录下有接近2万5千左右的文件.每个文件大概 16k左右.
不知道是哪里有问题,请大家帮我看看.  非常感谢.

解决方案 »

  1.   

    昏,帖子怎么发了两个? 这里有路径的信息,请各位去这里看吧. 
    http://topic.csdn.net/u/20081031/15/36442bbb-1ca0-4432-ad8b-54689e0a3cab.html?seed=686404322
      

  2.   


    public void EnsurePath(string Inpath)
            {  
                    if (!Directory.Exists(Inpath))
                        Directory.CreateDirectory(Inpath);
            }
      

  3.   

    从报错信息来看,估计是在EnsurePath(path)时出的问题,
    建议楼主不要把这个方法放到SaveHtml()里面,没必要每次都去确认路径是否存在
    只要在循环之前调用一次就够了。。
      

  4.   

    也有可能是这句:StreamWriter wr = new StreamWriter(filePath, false, Encoding.GetEncoding("gb2312"));
    这个的话就要注意磁盘空间是否已满。。
      

  5.   

    各位去这里看吧, 帖子不知道是csdn出了什么问题, 发了两个,在那个帖子里有详细的解释