一个文件夹下有N个文件,都是*.htm的
比如1.htm,2.htm,......x.htm要求程序能遍历此目录,以如下格式生成txt文件
<VirtualHost 1.1.1.1:80>
    ServerAdmin [email protected]
    DocumentRoot C:/Apache/test
    ServerName 1.test.com
    DirectoryIndex 1.htm
</VirtualHost><VirtualHost 1.1.1.1:80>
    ServerAdmin [email protected]
    DocumentRoot C:/Apache/test
    ServerName 2.test.com
    DirectoryIndex 2.htm
</VirtualHost>
...........<VirtualHost 1.1.1.1:80>
    ServerAdmin [email protected]
    DocumentRoot C:/Apache/test
    ServerName x.test.com
    DirectoryIndex x.htm
</VirtualHost>请求给出原代码和已经编译好的EXE文件,问题一解决立刻给分,谢谢。

解决方案 »

  1.   

    写入可以用CStdioFile,写入某一个的代码(1)
    CStdioFile  m_file;
    m_file.Open(m_fileName,CFile::modeCreate|CFile::modeReadWrite);
    m_file.WriteString("<VirtualHost 1.1.1.1:80>\n");
    m_file.WriteString("ServerAdmin [email protected]\n");
    m_file.WriteString("DocumentRoot C:/Apache/test\n");
    m_file.WriteString("ServerName 1.test.com\n");
    m_file.WriteString("DirectoryIndex 1.htm\n");
    m_file.WriteString("</VirtualHost>\n");
      

  2.   

    遍历目录代码:设文件夹名称m_folderNameHANDLE fh;
    WIN32_FIND_DATA fd;
    char  tmpstr[100],tmpstr1[100]; fh=FindFirstFile(m_folderName, &fd );
    if ( fh != INVALID_HANDLE_VALUE )
    {
    sprintf(tmpstr1,"%s",fd.cFileName);
    //这儿插入上面的写入文件名称的代码,文件名称为tmpstr1
    while ( FindNextFile( fh, &fd ) )
    {
    sprintf(tmpstr1,"%s",fd.cFileName);
    //这儿插入上面的写入文件名称的代码,文件名称为tmpstr1
    }
    FindClose(fh);
    }
    else
    FindClose(fh);
      

  3.   

    干脆实现代码写出来得了:
    void WriteFile(CStdioFile &vFile,CString VFileName)
    {
      vFile.WriteString("<VirtualHost 1.1.1.1:80>\n");
      vFile.WriteString("  ServerAdmin [email protected]\n");
      vFile.WriteString("  DocumentRoot C:/Apache/test\n");
      vFile.WriteString("  ServerName ");
      vFile.WriteString(VFileName);
      vFile>writeString("\n");
      vFile.WriteString("  DirectoryIndex ");
      vFile.WriteString(VFileName);
      vFile>writeString("\n");
      vFile.WriteString("</VirtualHost>\n");}//主程序遍历此目录,以如下格式生成txt文件
    void main()
    {
      CStdioFile  m_file;
      m_file.Open(m_fileName,CFile::modeCreate|CFile::modeReadWrite);
      HANDLE fh;
      WIN32_FIND_DATA fd;
      char  tmpstr[100],tmpstr1[100];
      fh=FindFirstFile(m_folderName, &fd );
      if ( fh != INVALID_HANDLE_VALUE )
      {
    sprintf(tmpstr1,"%s",fd.cFileName);
             WriteFile(m_file,tmpstr1);
             while ( FindNextFile( fh, &fd ) )
    {
    sprintf(tmpstr1,"%s",fd.cFileName);
    WriteFile(m_file,tmpstr1);
              }
    FindClose(fh);
    }
    else
    FindClose(fh);
    m_file.Close();
      

  4.   

    主要就是使用FindFile函数搜索目录,写文件就很简单了。