前面已经声明了两次了,现在是声明呢?还是再次声明呢?好吧,好意提醒大家,这只是我的个人笔记,对您毫无用处,请忽略。当然了,如果你硬要浪费时间看我的烂笔记,我也没有办法,但是我已经声明了,那我就没有责任了。
在程序中一旦调用了fclose函数关闭文件之后,如果需要再次访问该文件时,就需要重新打开该文 件,如果程序对某个文件的访问次数比较多得话,显然这种做法就不是很方便。如果希望每次对文件操 作之后并不关闭它,但人能将缓冲区中的数据写入到磁盘文件中,这时可以使用另一个C函数:fflush[ 学了这么久的C,这么重要一个函数居然是在学MFC的时候顺带捡回来的] 文本方式和二进制方式: 当按照文本方式向文件中写入数据时,一旦遇到“换行”字符(ASCII 10 ),则会转换为“回车- 换行”(ASCII 13,10)在读文件的时候,一旦遇到“回车-换行”的组合(连续的ASCII13,10),则会转 换为换行字符(ASCII为10)。 当按照二进制方式向文件中写入数据时,则会将数据在内存中的存储形式原样输出到文件中。 Win32 API对文件的支持: CreateFile,WriteFile,ReadFile For example: void CFileView::OnFileWrite()//写文件 { HANDLE hFile; hFile = CreateFile( "5.txt", GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL ); DWORD dwWrites; WriteFile(hFile, "http://www.sunxin.org" , strlen( "www.sunxin.org"), &dwWrites, NULL ) CloseHandle(hFile); } void CFileView::OnFileWrite()//读文件 { HANDLE hFile; hFile = CreateFile( "5.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); char ch[100]; DWORD dwWrites; WriteFile(hFile, ch , 100, &dwWrites, NULL ) ch[dwReads] = '\0'; CloseHandle(hFile); MessageBox( ch ); } MFC对文件的支持: CFile( LPCTSTR lpszFileName ,UINT nOpenFlags ); For example: void CFileView::OnFileWrite()//写入文件 { CFile file( "6.txt", CFile::modeCreate | CFile::modeWrite ); file.Write( "http://www.sunxin.org", strlen("http://www.sunxi.org")); file.Close(); } void CFileView::OnFileRead() //读文件 { CFile file(_T( "2.txt"), CFile::modeRead ); TCHAR *pBuf; DWORD dwFileLen; dwFileLen = file.GetLength(); pBuf = new TCHAR[ dwFileLen + 1 ]; pBuf[dwFileLen] = 0; file.Read(pBuf, dwFileLen ); file.Close(); MessageBox( pBuf ); } CFileDialog: CFileDialog fileDlg(FALSE); fileDlg.DoModal(); void CFileView::OnFileSave()//示例,此乃另存为,打开就更简单了 { CFileDialog fileDlg(FALSE); fileDlg.m_ofn.lpstrDefExt = _T("txt") ;fileDlg.m_ofn.lpstrTitle =_T( "我的文件保存对话框"); fileDlg.m_ofn.lpstrFilter =_T( "Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.* \0\0"); fileDlg.m_ofn.lpstrDefExt =_T( "txt"); if( IDOK == fileDlg.DoModal()) { CFile file( fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite); file.Write(_T("http://sunxin.org") , lstrlen( _T("http://sunxin.org"))); file.Close(); } } 对ini文件的操作: GetProfileString,WriteProfileString,GetPrivateProfileString,WritePrivateProfileString, GetProfileInt,WriteProfileInt看到这几个函数真亲切啊,因为我自个写过这样的函数,真感谢以前 的主管,给我们布置这么变态的任务。 对注册表的操作: RegCreateKey,RegOpenKey,RegSetValue,RegQureyValue, void CFileView::OnFileWrite() { HKEY pk; RegCreateKey( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Google\\Chrome\\Extensions\ \aohddidmgooofkgohkbkaohadkolgejj"),& pk); RegSetValue( pk , NULL, REG_SZ,_T( "zhangsan"),lstrlen( _T("zhangsan"))); RegCloseKey( pk ); } void CFileView::OnFileRead() { LONG value; RegQueryValue( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Google\\Chrome\\Extensions\ \aohddidmgooofkgohkbkaohadkolgejj"), NULL, &value); TCHAR *pBuf = new TCHAR[value]; RegQueryValue( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Google\\Chrome\\Extensions\ \aohddidmgooofkgohkbkaohadkolgejj"),pBuf, &value); MessageBox(pBuf); }