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

Posted

技术标签:

【中文标题】如何从char *获取pdf文件的最后写入日期(文件在内存中)【英文标题】:how to get pdf file's last write date from char*(the file is in memory) 【发布时间】:2014-07-16 15:05:50 【问题描述】:

我想获取 pdf 文件的最后写入日期作为时间戳,但 pdf 文件在内存中,由 char* 指向。

在这段代码的中间,你可以看到下载和组装/存储在一个 char* packet 中的所有文件段,我想从 packet 获取 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】:

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

因此,您没有机会仅从文件的内容中获取此信息,除非您知道文件的格式并且此格式包含信息。

【讨论】:

那是一个pdf文件,抱歉我忘了提,你的意思是pdf文件有它自己的标题格式? 是的,请查看PDF文件格式规范,看看是否包含您想要的信息,然后使用该格式阅读。 ;) 你的意思是像BOOL WINAPI GetFileTime(...)这样的函数可以识别文件类型,然后调用不同的解析函数来解析不同的文件头? msdn.microsoft.com/en-us/library/windows/desktop/… ...不,它不能,因为它仅适用于您硬盘上的现有文件。如果您只有内容,则无法获取该文件时间没有以某种方式解析该信息的内容。

以上是关于如何从char *获取pdf文件的最后写入日期(文件在内存中)的主要内容,如果未能解决你的问题,请参考以下文章

如何用fortran 在文本文件最后写入内容

如何获取 ADLS Gen2 文件的最后修改日期并将其保存到 python 中的 csv

C语言如何将链表里的值写入文件

如何从多个表 Oracle 中获取最后两个最大日期

java如何创建pdf文件,并将数据库数据写入pdf

python如何写入文本的最末行?