windows API編寫的提取檔案屬性的程式

來源:互聯網
上載者:User
用VC++6.0的編譯環境,建的是win32 console application

#include <stdafx.h>
#include <string.h>
#include <windows.h>

DWORD ShowFileTime(PFILETIME lptime)
{
//檔案時間結構
FILETIME ftLocal;
//系統時間結構
SYSTEMTIME st;
//調整為系統所在時區的時間
FileTimeToLocalFileTime(lptime,&ftLocal);
//將檔案時間轉換為SYSTEMTIME格式,便於顯示
FileTimeToSystemTime(&ftLocal,&st);
//顯示時間資訊字串
printf("%4d年%#02d月%#02d日,%#02d:%#02d:%#02d\n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
return 0;
}

DWORD ShowFileSize(DWORD dwFileSizeHigh,DWORD dwFileSizeLow)
{
ULONGLONG liFileSize;
liFileSize = dwFileSizeHigh;
//移動到32位
liFileSize <<= sizeof(DWORD)*8;
liFileSize += dwFileSizeLow;
printf("w檔案大小:\t%I64u 位元組\n",liFileSize);
return 0;
}

DWORD ShowFileAttrInfo(DWORD dwAttribute)
{
//依次判斷屬性,並顯示
printf("檔案屬性:\t");
if(dwAttribute&FILE_ATTRIBUTE_ARCHIVE)
printf("<ARCHIVE>");
if(dwAttribute&FILE_ATTRIBUTE_COMPRESSED)
printf("<壓縮>");
if(dwAttribute&FILE_ATTRIBUTE_DIRECTORY)
printf("<目錄>");
if(dwAttribute&FILE_ATTRIBUTE_ENCRYPTED)
printf("<加密>");
if(dwAttribute&FILE_ATTRIBUTE_HIDDEN)
printf("<隱藏>");
if(dwAttribute&FILE_ATTRIBUTE_NORMAL)
printf("<NORMAL>");
if(dwAttribute&FILE_ATTRIBUTE_OFFLINE)
printf("<OFFLINE>");
if(dwAttribute&FILE_ATTRIBUTE_READONLY)
printf("<唯讀>");
if(dwAttribute&FILE_ATTRIBUTE_SPARSE_FILE)
printf("<SPARSE>");
if(dwAttribute&FILE_ATTRIBUTE_SYSTEM)
printf("<系統檔案>");
if(dwAttribute&FILE_ATTRIBUTE_TEMPORARY)
printf("<臨時檔案>");
printf("\n");
return 0;
}

DWORD ShowFileAttributes(LPSTR szPath)
{
//檔案屬性結構
WIN32_FILE_ATTRIBUTE_DATA wfad;
printf("檔案:%s\n",szPath);
//擷取檔案屬性
if(!GetFileAttributesEx(szPath,GetFileExInfoStandard,&wfad))
{
printf("擷取檔案屬性錯誤:%d\n",GetLastError());
return 1;
}
//顯示相關時間
printf("建立時間:\t");
ShowFileTime(&(wfad.ftCreationTime));
printf("最後訪問時間:\t");
ShowFileTime(&(wfad.ftLastAccessTime));
printf("最後修改時間:\t");
ShowFileTime(&(wfad.ftLastWriteTime));
//顯示檔案大小
ShowFileSize(wfad.nFileSizeHigh,wfad.nFileSizeLow);
//顯示檔案屬性
ShowFileAttrInfo(wfad.dwFileAttributes);

return 0;
}

int main(PCHAR argv[])
{
printf("請輸入檔案路徑\n");
scanf("%s",argv);
ShowFileAttributes(argv[0]);
printf("顯示參數指定檔案的屬性、時間、大小;\n");
return 0;
}

這個程式運行後就顯示一行“請輸入檔案路徑”,然後輸了一個路徑按了enter以後程式就癱了…………
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.