随笔 - 26  文章 - 6  trackbacks - 0
<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(3)

随笔分类

随笔档案

朋友

  • cqh
  • 大学室友...

搜索

  •  

最新评论

阅读排行榜

评论排行榜

1. 文件API

1.1. 打开关闭文件

CreateFile

HANDLE CreateFile(

  LPCTSTR lpFileName,  //指向文件名的指针

  DWORD dwDesiredAccess,  //访问模式(/)

  DWORD dwShareMode,  //共享模式

  LPSECURITY_ATTRIBUTES lpSecurityAttributes,  //指向安全属性的指针

  DWORD dwCreationDisposition,  //如何创建

  DWORD dwFlagsAndAttributes,  //文件属性

  HANDLE hTemplateFile //用于辅助文件句柄

); 

如果函数成功,返回一个打开的指定文件的句柄

CloseHandle

1.2. 文件的读写

ReadFile

BOOL ReadFile( 

  HANDLE hFile,  //要读取的文件的句柄,必须为打开的

  LPVOID lpBuffer,  //接收文件数据的缓冲区指针

  DWORD nNumberOfBytesToRead,  //文件中要读取数据的大小

  LPDWORD lpNumberOfBytesRead,  //从文件中读出的数据大小

  LPOVERLAPPED lpOverlapped //指向OVERLAPPED结构的指针

); 

如果函数正确执行,则返回TRUE,否则返回FALSE

WriteFile

BOOL WriteFile( 

  HANDLE hFile,  //要写入的文件句柄,必须为打开的

  LPCVOID lpBuffer,  //指向要写入的数据的缓冲区大小

  DWORD nNumberOfBytesToWrite,  //要写入的字节数

  LPDWORD lpNumberOfBytesWritten,  //返回实际写入文件的字节数

  LPOVERLAPPED lpOverlapped //指向OVERLAOOED结构的指针

); 

如果函数正确执行,则返回TRUE,否则返回FALSE

1.3. 获取文件大小

GetFileSize

DWORD GetFileSize( 

  HANDLE hFile,  //访问的文件句柄,已打开

  LPDWORD lpFileSizeHigh //高字节地址

); 

如果函数执行成功,函数返回文件大小的低32位的值,而如果文件很大,则参数lpFileSiezHigh返回高32位的值。如果函数执行失败,返回0xFFFFFFFF

1.4. 文件的查找与遍历

FindFirstFile

HANDLE FindFirstFile(

LPCTSTR lpFileName,  //表示文件名的字符串

LPWIN32_FIND_DATA lpFindFileData  //指向WIN32_FIND_DATA结构的指针

//存储所查找的文件的属性

); 

函数执行成功,返回一个有效的文件查找句柄,并且填充WIN32_FIND_DATA结构

WIN32_FIND_DATA

typedef struct _WIN32_FIND_DATA { 

  DWORD dwFileAttributes;  //文件的属性

  FILETIME ftCreationTime;  //文件创建时间

  FILETIME ftLastAccessTime;  //最后访问时间

  FILETIME ftLastWriteTime;  //最后修改时间

  DWORD nFileSizeHigh; 

  DWORD nFileSizeLow;  //大小

  DWORD dwOID; 

  TCHAR cFileName[MAX_PATH];  //文件名称

} WIN32_FIND_DATA; 

FindNextFile

根据有效的文件查找句柄调用FindNextFile()函数进行下一个文件的查找。

BOOL FindNextFile( 

  HANDLE hFindFile,  //为有效的文件查找句柄,如果函数执行 //成功,会被赋予下一个文件的查找句柄

  LPWIN32_FIND_DATA lpFindFileData  //同上

); 

如果文件查找操作完成,需要调用函数FindClose()关闭文件查找句柄。

      

1.5. 打开文件夹

SHBrowseForFolder

/**
* @brief    选择打开的文件夹
* @param    pchPath 返回选择的文件夹路径
* @remark    调用SHBrowseForFolder函数
* @return    返回true表示执行成功
*/

bool KFile::GetFolder(TCHAR* pchPath)
{
    
if (NULL == pchPath)
    
{
        assert(
0);
        
return false;
    }


    BROWSEINFO bi;
    ZeroMemory(
&bi, sizeof(BROWSEINFO));
    LPMALLOC pMalloc;
    LPITEMIDLIST pidl 
= SHBrowseForFolder(&bi);
    
if (pidl != NULL)
    
{
        
//从LPITEMIDLIST取出路径
        SHGetPathFromIDList(pidl, pchPath);
        
if (SUCCEEDED(SHGetMalloc(&pMalloc)))
        
{
            pMalloc
->Free(pidl);
            pMalloc
->Release();
        }

        
return true;
    }

    
return false;
}

1.6. 打开文件与保持文件

GetOpenFileName

/**
* @brief    选择打开的文件
* @param    hWnd    所属窗口句柄
* @param    pchPath 返回选择的文件路径
* @remark    调用GetOpenFileName函数
* @return    返回true表示执行成功
*/

bool KFile::GetOpenFile(HANDLE hWnd, TCHAR* pchPath)
{
    
if (NULL == pchPath)
    
{
        assert(
0);
        
return false;
    }


    OPENFILENAME Ofn;
    pchPath[
0= L'\0';
    ZeroMemory(
&Ofn, sizeof(Ofn));
    Ofn.lStructSize 
= sizeof(OPENFILENAME); 
    Ofn.hwndOwner 
= m_hWnd;                //所有者对话框窗口的句柄
    Ofn.lpstrFilter = SUFFIX_NAME;        
    Ofn.lpstrFile
= pchPath;
    Ofn.lpstrFileTitle 
= NULL;
    Ofn.lpstrInitialDir 
= NULL; 
    Ofn.nMaxFile 
= MAX_PATH;
    Ofn.Flags 
= OFN_SHOWHELP | OFN_OVERWRITEPROMPT; 
    
return GetOpenFileName(&Ofn);
}


      OPENFILENAME 结构体细看http://baike.baidu.com/view/2175167.htm

GetSaveFileName 

      类似GetOpenFileName

posted on 2009-07-28 17:44 longshen 阅读(679) 评论(0)  编辑 收藏 引用 所属分类: VC++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理