李国帅于2006-3-23 13:16 qq:9611153
WINAPI
HRESULT FindFirstFile(LPCWSTR wsSearchFile, WIN32_FIND_DATA pFindFileData); HANDLE FindFirstFile(LPCTSTR lpFileName, LPWIN32_FIND_DATA lpFindFileData); //找不到返回INVALID_HANDLE_VALUE = 0xffffffff, 找到信息在WIN32_FIND_DATA 结构中, 返回一个句柄 HANDLE FindFirstFile("*", lp_find_data);
-------------------------
C函数
FILE *fp=fopen( "path\\filename", "r" ); if( fp != NULL ) { MessageBox( NULL, "这个文件已经存在!", "Tips", MB_OK ); }
-----------------------------
C标准函数
有一个函数很简单的,access(“path\\filename”),返回值只有两种0和非0,其他的就看你自己了。
#include "IO.h" char *file = "test.txt"; if(_access(file, 0)==0) printf ("file exists"); else printf ("file not exists");
--------------------------------------------------------
C++类CFileFind
用CFileFind::FindFile("path\\filename"),返回值也只有两种0和非0,然后用CFileFind::IsDirectory()判断是目录还是文件
CFileFind ff; BOOL IsFind=ff.FindFile(strtext); if(IsFind){ while(IsFind){ IsFind=ff.FindNextFile(); CString strFileName; CString strFileLength; strFileName+=ff.GetFileName(); if (!ff.IsDots()) { if (ff.IsDirectory()) { //做你想做的是如CreateDirectory(DirPath,NULL); } } } } BOOL CPubFunc::FileExist(CString FileName) { CFileFind fFind; return fFind.FindFile(FileName); } BOOL CPubFunc::DirectoryExist(CString Path) { WIN32_FIND_DATA fd; BOOL ret = FALSE; HANDLE hFind = FindFirstFile(Path, &fd); if ((hFind != INVALID_HANDLE_VALUE) && (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { //目录存在 ret = TRUE; } FindClose(hFind); return ret; } BOOL CPubFunc::CreateDirectory(CString path) { SECURITY_ATTRIBUTES attrib; attrib.bInheritHandle = FALSE; attrib.lpSecurityDescriptor = NULL; attrib.nLength = sizeof(SECURITY_ATTRIBUTES); return ::CreateDirectory( path, &attrib); }
------------------
C++类CFile file;
file.Open("文件名",CFile::modeRead,NULL);
如果打开成功,说明存在。(别忘了关闭
CFile file; if(!file.Open("c:\\temp\\test.txt",CFile::modeRead,NULL)) { AfxMessagebox("Can't open this file"); }
系统库API:
BOOL PathFileExists( LPCTSTR pszPath );
头文件:#include "Shlwapi.h"
库文件:shlwapi.lib.需IE4或更新
---------------------------
String sFile sFile = Dir(".\BookMark.txt") If FileInQuestion = "" Then MsgBox("No such file!") Else MsgBox("File exists!") End If
------------------------------
总结
任何问题都会有很多种不同的解法,而这些解法之间又存在很多的关系,如分层包装(继承),组合,适应变种等等,用一种方法即可.