Добавление на карту - PullRequest
       1

Добавление на карту

0 голосов
/ 29 сентября 2011

Я пытаюсь добавить размер файла на эту карту.Похоже, я делаю беспорядок.Любая помощь приветствуется.Спасибо.

int GetFileList(const wchar_t *searchkey, std::map<std::wstring, std::wstring> &map)
{
    WIN32_FIND_DATA fd;
    HANDLE h = FindFirstFile(searchkey,&fd);
    if(h == INVALID_HANDLE_VALUE)
    {
        return 0; // no files found
    }
    while(1)
    {
        wchar_t buf[128];
        FILETIME ft = fd.ftLastWriteTime;
        SYSTEMTIME sysTime;
        FileTimeToSystemTime(&ft, &sysTime);
        wsprintf(buf, L"%d-%02d-%02d",sysTime.wYear, sysTime.wMonth, sysTime.wDay);
        map[fd.cFileName] = buf;
  map[fd.nFileSizeHigh] = buf;
  map[fd.nFileSizeLow] = buf;
if(FindNextFile(h, &fd) == FALSE)
      break;
    }
    return map.size();
}

void main()
{ 
    std::map<std::wstring, std::wstring> map;
    int count = GetFileList(L"C:\\Users\\DS\\Downloads\\*.zip", map)
    && GetFileList(L"C:\\Users\\DS\\Downloads\\*.txt", map);
    for(std::map<std::wstring, std::wstring>::const_iterator it = map.begin(); 
          it != map.end(); ++it)
    {
        //MessageBoxW(NULL,it->first.c_str(),L"File Name",MB_OK);
  //MessageBoxW(NULL,it->second.c_str(),L"File Date",MB_OK);

    }
}

1 Ответ

2 голосов
/ 29 сентября 2011

Ну, вам нужно решить, из чего вы отображаете, и для чего вы отображаете.

Возможно, вы хотите отобразить имя файла на структуру {размер файла, время файла}.

Держите его похожим на ваш код:

struct file_data
{
    wstring sLastAccessTime;
    __int64 nFileSize      ;
};

int GetFileList(const wchar_t *searchkey, std::map<std::wstring, file_data> &map)
{
    WIN32_FIND_DATA fd;
    HANDLE h = FindFirstFile(searchkey,&fd);
    if(h == INVALID_HANDLE_VALUE)
    {
        return 0; // no files found
    }
    while(1)
    {
        wchar_t buf[128];
        FILETIME ft = fd.ftLastWriteTime;
        SYSTEMTIME sysTime;
        FileTimeToSystemTime(&ft, &sysTime);
        wsprintf(buf, L"%d-%02d-%02d",sysTime.wYear, sysTime.wMonth, sysTime.wDay);

        file_data filedata;
        filedata.sLastAccessTime= buf;
        filedata.nFileSize      = (((__int64)fd.nFileSizeHigh) << 32) + fd.nFileSizeLow;

        map[fd.cFileName]= filedata;

        if (FindNextFile(h, &fd) == FALSE)
            break;
    }
    return map.size();
}

int main()
{
    std::map<std::wstring, file_data> map;
    GetFileList(L"C:\\Users\\DS\\Downloads\\*.zip", map);
    GetFileList(L"C:\\Users\\DS\\Downloads\\*.txt", map);

    for(std::map<std::wstring, file_data>::const_iterator it = map.begin();
        it != map.end(); ++it)
    {
        MessageBoxW(NULL,it->first.c_str(),L"File Name",MB_OK);
        MessageBoxW(NULL,it->second.sLastAccessTime.c_str(),L"File Date",MB_OK);
    }

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...