• windows api 每日一练(3)文件操作


    参考:http://www.yesky.com/99/1824599.shtml

    1.OpenFile 全功能函数,可以打开,创建,删除文件

    HFILE WINAPI OpenFile(
      __in   LPCSTR lpFileName,
      __out  LPOFSTRUCT lpReOpenBuff,
      __in   UINT uStyle
    );


    2.获取文件长度

    DWORD WINAPI GetFileSize(
      __in       HANDLE hFile,
      __out_opt  LPDWORD lpFileSizeHigh
    );


    3.获取文件类型

    DWORD WINAPI GetFileType(
      __in  HANDLE hFile
    );


    4.获取指定文件时间信息

    BOOL WINAPI GetFileTime(
      __in       HANDLE hFile,
      __out_opt  LPFILETIME lpCreationTime,
      __out_opt  LPFILETIME lpLastAccessTime,
      __out_opt  LPFILETIME lpLastWriteTime
    );


    5.获取文件名

    (1)全名

    DWORD WINAPI GetFullPathName(
      __in   LPCTSTR lpFileName,
      __in   DWORD nBufferLength,
      __out  LPTSTR lpBuffer,
      __out  LPTSTR* lpFilePart
    );


    (2)长路径名

    DWORD WINAPI GetLongPathName(
      __in   LPCTSTR lpszShortPath,
      __out  LPTSTR lpszLongPath,
      __in   DWORD cchBuffer
    );

    (3)短路径名

    DWORD WINAPI GetShortPathName(
      __in   LPCTSTR lpszLongPath,
      __out  LPTSTR lpszShortPath,
      __in   DWORD cchBuffer
    );
    


    Test

    #include <windows.h>
    #include <stdio.h>
    #include <iostream>
    int main()
    {
      std::wstring originalStrFile(L"./test.txt");
    
    HANDLE hFile; 
    
    hFile = CreateFile(originalStrFile.c_str(),    // file to open
                       GENERIC_READ,          // open for reading
                       FILE_SHARE_READ,       // share for reading
                       NULL,                  // default security
                       OPEN_EXISTING,         // existing file only
                       FILE_ATTRIBUTE_NORMAL, // normal file
                       NULL);
    //获?取?文?件?大?小?
    DWORD dwSize =GetFileSize(hFile,NULL);
    //获?取?文?件?类?型?
    DWORD fileType=GetFileType(hFile);
    //获?取?文?件?时?间?信?息?
    FILETIME time1;
    FILETIME time2;
    FILETIME time3;
    GetFileTime(hFile,&time1,&time2,&time3);
    //获?取?文?件?名?
    DWORD bufferLength=100;
    TCHAR  buffer[100]=TEXT(""); 
    TCHAR* lpPart[100]={NULL};
    //获?取?全?名?
    GetFullPathName(originalStrFile.c_str(),bufferLength,buffer,lpPart);
    //获?取?长?路?径?名?
    GetLongPathName(originalStrFile.c_str(),buffer,bufferLength);
    //获?取?短?路?径?名?
    GetShortPathName(originalStrFile.c_str(),buffer,bufferLength);
    //关?闭?句?柄?对?象?
    CloseHandle(hFile);
    }
  • 相关阅读:
    2716 [Violet 3] 天使玩偶
    BZOJ1017魔兽地图DotR 樹形DP
    BZOJ1016最小生成树计数 最小生成树 + 排列组合
    BZOJ1014火星人prefix Splay維護序列 + 字符串哈希
    BZOJ1010玩具裝箱Toy
    BZOJ1009GT考试 DP + KMP + 矩陣快速冪
    BZOJ1008[HNOI2008]越狱
    BZOJ1006神奇的国度 弦圖染色 最大勢算法
    BZOJ1005明明的烦恼 Prufer + 分解質因數 + 高精度
    poj2182(线段树求序列第k小)
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1604391.html
Copyright © 2020-2023  润新知