急!怎样判断一个文件或文件夹是否存在?

UPCCPU 2003-04-10 03:27:36
急!怎样判断一个文件或文件夹是否存在?
...全文
471 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jemmylau 2003-04-10
  • 打赏
  • 举报
回复
如何判断文件是否存在

方法一、

POFSTRUCT lpOpenBuf=new OFSTRUCT;
HFILE hFile=OpenFile(strFileName,lpOpenBuf,OF_EXIST);
if(hFile!=HFILE_ERROR)
{
// file exist.
}

方法二、

#include
CString m_Edit=“f:\\test.txt”;//从Edit得到的字符串
ifstream infile(m_Edit);
if(!infile)
{
AfxMessageBox("该文件不存在");
}

方法三、

char *lpszStr="C:\WINDOWS\system32\MSCAL.OCX";
PathFileExists(lpszStr);

方法四、
FILE *fp=NULL;
fp = fopen( "C:\WINDOWS\system32\MSCAL.OCX", "r" );
if( fp != NULL )
{
MessageBox(NULL, "这个文件已经存在!", "Tips", MB_OK );
return ;
}

方法五、
HANDLE hFind;
WIN32_FIND_DATA dataFind;
BOOL bMoreFiles = TRUE;

//Find the first file in the main directory
hFind = FindFirstFile(TEXT("C:\\WINDOWS\\system32\\MSCAL.OCX"),&dataFind);
if(hFind) //若存在,则hFind == TRUE
{
}
else
{
}
FindClose(hFind);

方法六、

CString strPath("C:\\a.txt");
HANDLE hFile = NULL;

hFile= CreateFile(
strPath,
GENERIC_ALL,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,//判定文件是否存在 FILE_ATTRIBUTE_NORMAL,
NULL);

DWORD dwErr = GetLastError();
if (dwErr == ERROR_FILE_NOT_FOUND)
{
AfxMessageBox("FILE_NOT_FOUND");
}

if (hFile)
CloseHandle(hFile);


方法七、
CFileFind find;
int result=find.FindFile("C:\\aaa.txt");
if(result==0)
{
AfxMessageBox("文件不存在");
}
else
{
AfxMessageBox("文件存在");
}
nonocast 2003-04-10
  • 打赏
  • 举报
回复
see this
两个办法:
1、
CFileFind f;
if(f.FindFile("c:\\temp"))
AfxMessageBox("存在");
//Directory exist.
else
AfxMessageBox("不存在");
//Not exist.

2、
if(_access("c:\\temp", 0) == 0){
AfxMessageBox("存在");
}
else{
AfxMessageBox("不存在");
}

by the way
检查目录并且创建

//一个小函数,不管原来有没有存在都可以,没考虑只读属性的盘
void CBookSet::CreateDirTree(LPCTSTR path)
{
CString sFullPath = path;

int iPos = sFullPath.Find(_T("\\\\")) + 1;
if(iPos != 0)
{ // support \\192.168.53.136\vssworkpath\test2\...
iPos = sFullPath.Find(_T('\\'), iPos + 1);
iPos = sFullPath.Find(_T('\\'), iPos + 1);
}
else
{ // support c:\test2\...
iPos = sFullPath.Find(_T('\\'), iPos + 1);
}

while( -1 != (iPos = sFullPath.Find(_T('\\'), iPos + 1)) )
{
::CreateDirectory(sFullPath.Left(iPos), NULL);
}
}
lblyy76 2003-04-10
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1625/1625535.xml?temp=.7201502
clife 2003-04-10
  • 打赏
  • 举报
回复
CFileFind
CaptainIII 2003-04-10
  • 打赏
  • 举报
回复
/* ACCESS.C: This example uses _access to check the
* file named "ACCESS.C" to see if it exists and if
* writing is allowed.
*/

#include <io.h>
#include <stdio.h>
#include <stdlib.h>

void main( void )
{
/* Check for existence */
if( (_access( "ACCESS.C", 0 )) != -1 )
{
printf( "File ACCESS.C exists\n" );
/* Check for write permission */
if( (_access( "ACCESS.C", 2 )) != -1 )
printf( "File ACCESS.C has write permission\n" );
}
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧