我要做个程序,需要在已经设定好的目录下,提取所有的文件,文件名没有规则,存放的内容是字符串,内容类似于“|1|86771002000|ZTEIGW|2006-10-18 01:15:11|20|||6”,
并将每个文件中存放的字符串分割处理后存放进数据,然后再删除该文件,现在我有以下几个问题,请教高手:
1、如果获取某个目录下有多少个文件?
2、如果枚举完该目录下的所有文件,在枚举过程是否可以删除已经枚举过的文件?请帮忙给出一小段代码,或者给出函数;
3、我需要逐行取出字符串,那么用什么类操作比较方便,CFILE是否方便打开?
4、像这样“|1|86771002000|ZTEIGW|2006-10-18 01:15:11|20|||6”的字符串,我要根据|分隔符将每块分割出来存放进一个数组,那么用什么办法分割比较方便,逐个字符去分析太麻烦了?
5、麻烦给一段MFC操作ORACLE的代码,包括链接,插入数据的就可以了,我没做过。
问题比较多,但都比较简单,因为我有5年没用过VC了,所以请各位耐心给我点提示代码,我才好去查MSDN,谢谢。

解决方案 »

  1.   

    CFileFind finder;
       BOOL bWorking = finder.FindFile("*.*");
       while (bWorking)
       {
          bWorking = finder.FindNextFile();
          cout << (LPCTSTR) finder.GetFileName() << endl;
       }
      

  2.   

    >1、如果获取某个目录下有多少个文件?
    -----------------------------------
    http://community.csdn.net/Expert/TopicView.asp?id=50791122.加上 DeleteFile 即可3. 无所谓  .
      

  3.   

    4.
    CString str=_T("|1|86771002000|ZTEIGW|2006-10-18 01:15:11|20|||6");
    BYTE buf[1024][64]; //自己定义一个大小,也可动态生成
    CString resToken;
    int curPos = 0;
    int i = 0;resToken = str.Tokenize(_T("|"), curPos); // 用 '|' 作为分隔符
    while (resToken != "")
    {
    strcpy(buf[i], resToken); // 复制到 buf 中
    resToken = str.Tokenize(_T("|"), curPos);
    i++;
    };
      

  4.   

    CStdioFile file("g:\\1.txt",CFile::modeRead| CFile::typeText);
    CString line;
    file.ReadString(line);
    cout<<endl<<endl<<line;
      

  5.   

    谢谢各位,我写了如下一个函数将文件中的行提取出来后装入一个数组,便于后面处理,
    由于文件有多行,所以我定义了一个2维数组,但是循环一会老是出错,各位有空帮忙看看?
    谢谢了
    int CWork::GetSourceData(CString FileName)
    {
    //该程序处理数据文件:1提取原始数据到原始数组; 
      CStdioFile f1;
    CString line;
    CString resToken;
    int curPos = 0;
    int i = 0;
    int j=0;
    FileName.Replace("\\","\\\\");
    CString Col[100];
    CString SourceData[30000][100];//将文件提取出来的字符装入该数组中
    //memset(&SourceData,0,sizeof(SourceData));
    if( !f1.Open( FileName, CFile::modeRead| CFile::typeText ) ) 
    {
    m_hdlg->DisplayMessage("文件打开不成功,可能是文件丢失或者其他原因",1);
    return -1;//file could not be found
    }
    while(f1.ReadString(line))
    {
    i=0;
    resToken = line.Tokenize(_T("|"), curPos); // 用 '|' 作为分隔符
    while (resToken != "")
    {
    SourceData[j][i]=resToken; // 复制到 buf 中
    resToken = line.Tokenize(_T("|"), curPos);
    i++;
    }  j++;
    }
    return j;}
      

  6.   

    错误信息为:
    TGPGetData.exe 中的 0x00401e19 处未处理的异常: 0xC0000005: 写入位置 0x00000000 时发生访问冲突
      

  7.   

    错误的语句为 resToken = line.Tokenize(_T("|"), curPos);