|
|
5.获取文件名,文件类型,文件长度,文件路径
用利用CFile打开一个文件时,可以在利用成员函数
virtual CString GetFileName( ) const, virtual CString GetFileTitle( )
const, virtual CString GetFilePath( ) const, virtual DWORD GetLength( )
const;throw( CFileException
); | 来取得相关信息,如果一个文件的全路经是:
c:\windows\write\myfile.wri,则每个函数取得的是: myfile.wri, myfile,
c:\windows\write\myfile.wri. GetLength取得文件大小是按字节为单位的。
也可以利用:
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.小结
在实际中还有很多其他操作文件的方法,上面介绍的只是简单的几种,希望通过上面的简单介绍,在加上具体实践,能够找到解决问题的最好办法!
(责任编辑:luwei) |
|
|