2014-07-16 4 views
0

pdf 파일의 마지막 쓰기 날짜를 타임 스탬프로 가져 오려고하지만 pdf 파일은 char *이 가리키는 메모리에 있습니다.PDF 파일의 마지막 쓰기 날짜를 char * (파일이 메모리에 있음)에서 얻는 방법

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()); 
     } 
    } 
} 

답변

0

정보 :이 코드의 중간에

, 모든 파일 세그먼트 다운로드 및 문자 * 패킷, 내가 패킷에서 pdf 파일의 정보를 얻을 원하는에 저장/조립 볼 수 있습니다 마지막 편집 시간과 마찬가지로, 생성 시간 및 기타 파일 관련 정보는 내에 저장되지만 파일 시스템은 해당 파일 시스템 (예 : 헤더)으로 저장됩니다.

따라서 파일의 형식을 알고이 형식에 정보가 들어 있다는 것을 제외하고 파일의 내용에서만이 정보를 얻을 수는 없습니다.

+0

그 파일은 pdf 파일입니다. 유감스럽게 생각 합니다만, PDF 파일의 헤더 자체 형식을 가지고 있다는 것을 잊어 버리시겠습니까? –

+0

예, 원하는 정보가 포함되어 있는지 알아 보려면 PDF 파일 형식 사양을 참조한 다음 형식을 사용하여 읽으십시오. ;) – maxdev

+0

당신은 * BOOL WINAPI GetFileTime (...) 같은 함수를 의미 * 파일 형식을 식별 할 수 있습니다, 다른 헤더를 구문 분석하는 다른 구문 분석 함수를 호출 할 수 있습니까? http://msdn.microsoft.com/en-us/library/windows/desktop/ms724320(v=vs.85).aspx –