龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

解读VC++编程中的文件操作API和CFile类(8)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
也可以利用: virtual void SetLength( DWORD dwNewLen );throw( CFileException ); virtual void SetFilePath( LPCTSTR lpszNewName ); 来设置文件的长度和路径。 在当前的文件下面新建一

  也可以利用:

virtual void SetLength( DWORD dwNewLen );throw( CFileException );
virtual void SetFilePath( LPCTSTR lpszNewName );

  来设置文件的长度和路径。

  在当前的文件下面新建一个Text.txt文件,在里面写点东西,然后运行下面程序:

CFile file("Text.txt",CFile::modeReadWrite);
ULONGLONG length;
CString strFilePath;
length = file.GetLength();
length = length + 1024*10;
file.SetLength(length);
file.SetFilePath("D:Text.txt");
strFilePath = file.GetFilePath();
MessageBox(strFilePath);
file.Close();

  最后发现文件的路径变了,但是在D盘下面并没有找到Text.txt,原因是SetFilePath只能指定一个路径给文件,SetFilePath并不能做为移动文件来使用。

  CFile并没有给出取得文件类型的函数,有了上面基础,这个很容易实现。

  API函数中也有获得文件路径的操作,这里只是做简单介绍,可以参照MSDNN的说明:GetFileSize可以获得文件的大小,GetFullPathName 函数获取文件的完整路径名,只有当该文件在当前目录下,结果才正确。GetModuleFileName函数获取文件的完整路径名,这些函数有些用到文件句柄的。

  用CFileDialog打开的文件,可以使用它的成员变量m_ofn,或者成员函数GetFileName, GetFileTitle, GetFilePath, GetFileExt来取得相关信息.

CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );

  各个参数如下:

  bOpenFileDialog 为TRUE为打开对话框,为FALSE为保存对话文件对话框

  lpszDefExt 指定默认的文件扩展名。

  lpszFileName 指定默认的文件名。

  dwFlags 指明一些特定风格。

  lpszFilter它指明可供选择的文件类型和相应的扩展名。参数格式如:

  "Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。

  pParentWnd 为父窗口指针

CString FileFilter = "所有文件(*.*)|*.*||";
CFileDialog FileDialog(true,NULL,NULL,OFN_HIDEREADONLY,FileFilter,NULL);
FileDialog.DoModal();
MessageBox(FileDialog.GetFileName());

  6.小结

  在实际中还有很多其他操作文件的方法,上面介绍的只是简单的几种,希望通过上面的简单介绍,在加上具体实践,能够找到解决问题的最好办法!

精彩图集

赞助商链接