我在目录下有多个子目录,子目录里面有多个.zip文件和一个index.txt文件。我想根据index.txt文件里的内容改变.zip文件的名字,请问怎么做啊??
.zip 原来的名字是数字
.txt 里面的内容如下:
1,01.zip
codefile(130k)
2,02.zip
zhangwei
asdjfljsio(250k)
类似这样的问题。

解决方案 »

  1.   

    先找出index.txt文件 的文件名,要改的文件名 放两个数据 内容
    再用FindFirst 查找目录 zip 文件
    对应改名
      

  2.   

    我的一段遍历目录的程序,仅供参考。void CShpFileUpdateDlg::OnButton3() 
    {

    HANDLE fh;
    WIN32_FIND_DATA fd;
    char tmpstr1[100];
    CString m_sPath;
    char szFilter[] = "Executable Files (*.shp)|*.shp|"; /*parse file path*/
    char drive[_MAX_DRIVE];
    char dir[_MAX_DIR];
    char fname[_MAX_FNAME];
    char ext[_MAX_EXT];
    char fullpath[256];
    /*******/

    char m_pConfigPath[256];
    CFileDialog dlg(TRUE,NULL,NULL,
    OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ENABLESIZING|OFN_ALLOWMULTISELECT,
    szFilter);
    if (dlg.DoModal()==IDOK)
    {
    m_sPath=dlg.GetPathName();
    _splitpath( m_sPath, drive, dir, fname, ext );
    sprintf(fullpath,"%s%s",drive,dir);
    sprintf(m_pConfigPath,"%s%s*.shp",drive,dir);
    fh=FindFirstFile(m_pConfigPath, &fd );
    if ( fh != INVALID_HANDLE_VALUE )
    {

    sprintf(tmpstr1,"%s%s",fullpath,fd.cFileName);
    ConvertFile(tmpstr1);
    while ( FindNextFile( fh, &fd ) )
    {
    sprintf(tmpstr1,"%s%s",fullpath,fd.cFileName);
    ConvertFile(tmpstr1);
    }
    FindClose(fh);
    }
    else
    FindClose(fh);
    }
    }
      

  3.   

    遍历目录
      hFind = FindFirstFile(_T("c:\\xxx\\*.zip"), &findData);
      FindNextFile(hFind, &findData);
    读文本文件仍然可以使用
      FILE  *fp = fopen("index.txt", "r");
      ..
      fscanf("%s", &szName);
      fclose(fp);
    修改文件名称
      CFile f;
      f.Open("1.zip", ....);
      f.Rename("...");
      f.Close();
      

  4.   

    CFile::ReName()
    or
    CopyFile()
      

  5.   

    读Txt文件:CStdioFile m_TFile;
    m_TFile.ReadString();
    可以一行一行的读文本字符串。
      

  6.   

    CStdioFile m_File;
      CFileException ex;
      if(!m_File.Open("index.txt",CFile::modeReadWrite,&ex))
    return;
      CString m_ss;
      
      m_File.ReadString(m_ss)
      MessageBox(m_ss);
      //or
      char buff[100];
      m_File.ReadString(buff,99);
      

  7.   

    CStdioFile 先读入内容,然后再用Rename等改名