按字节为单位的。
也可以利用:
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.小结 在实际中还有很多其他操作文件的方法,上面介绍的只是简单的几种,希望通过上面的简单介绍,在加上具体实践,能够找到解决
问题的最好办法!