如何从char *获取pdf文件的最后写入日期(文件在内存中)

时间:2014-07-16 15:05:51

标签: c++ visual-c++ vc6

我希望将pdf文件的最后写入日期作为时间戳,但pdf文件在内存中,由char *指示。

在此代码的中间,您可以看到下载和汇编/存储在char * 数据包中的所有文件段,我想从数据包中获取pdf文件的信息

void ProcessSegmt(const uint8 *pSeg, uint32 iSegLen)
{
    char* pFile;
    char* packet = m_packet_;
    if( iSegLen != 0 ) // flush work buffers
    {
        if ( offset == 0 )
        {
            memset(header, 0, sizeof header);
            pFile = strstr (GetFilename(), "\x5C"); //finds \ for directory
            sprintf(header, "\t%s\t%d\t", ++pFile, nDownloadFileSize);

            memset(packet, 0, MAX_BUF+MAX_HEADER);
            memcpy(packet, header, strlen(header));
        }

        if ( offset + iSegLen < nDownloadFileSize ) // part of file downloaded 
        {
            memcpy( packet+strlen(header) + offset, pSeg, iSegLen );
            offset += iSegLen;

            Logger->root()->info("Downloaded file: %s, already %d bytes, left %d bytes", 10, GetFilename(), offset, 
                nDownloadFileSize - offset);
        }
        else if ( offset + iSegLen == nDownloadFileSize )
        {
            // all downloaded
            memcpy( packet+strlen(header)+offset, pSeg, iSegLen );
            offset = 0;

            Logger->root()->info("Downloaded entire contents of file: %s", 10, GetFilename());

            // !!!!!!!
            // all segements downloaded(in packet), i want get timestamp here 
            // !!!!!!!

        }
        else
        {
            offset = 0; 
            Logger->root()->info("Error downloading file: %s", 11, GetFilename());
        }
    }
}

1 个答案:

答案 0 :(得分:0)

上次编辑时间,创建时间和其他文件相关信息等信息不会存储在文件内容中,而是存储在相应的文件系统中(例如标题)。

因此,除了您知道文件的格式并且此格式包含信息之外,您无法仅从文件的内容中获取此信息。