在C++中如何判断一个文件夹收否存在

cowman4 2003-09-15 02:13:21
在C++中如何判断一个文件夹收否存在
...全文
496 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
cowman4 2003-09-16
  • 打赏
  • 举报
回复
问题解决了,发分
crane2003 2003-09-16
  • 打赏
  • 举报
回复

BOOL CreateDirectory
(
LPCTSTR lpPathName, // directory name
LPSECURITY_ATTRIBUTES lpSecurityAttributes // SD
);
返回值为0时,GetLastError()判断目录是否已经存在
夭夭 2003-09-16
  • 打赏
  • 举报
回复
PathFileExists platflam sdk中,试试,不知是不是,我只是看名字比较像
bluedodo 2003-09-16
  • 打赏
  • 举报
回复
那你就用我第一个方法试试啊,用find_t结构啊
但我手头没有VC6.0的类库,不知道他的DOS。H头文件里有这个结构没有
cowman4 2003-09-16
  • 打赏
  • 举报
回复
众位老兄我从来没说过是在dos下呀!!!
API中没有DirectorExists(),我现在就想知道用什么,但是MSDN中没有查到
bluedodo 2003-09-15
  • 打赏
  • 举报
回复
晕,是在WINDOWS下啊,唉,还要我用了DOS下的结构~~
好像有个API是DirectorExists();具体参数我不记得了,手头也没有MSDN你自己查查吧
bluedodo 2003-09-15
  • 打赏
  • 举报
回复
你先用findfirst找到你所要寻找目录的文件名的文件
然后你再通过检测这个文件的属性是不是目录属性
文件的属性在结构find_t(由dos.h头文件中定义)的attrib成员中
例:
struct find_t
{
long reserved;
long size; /* size of file */
unsigned long attrib; /* attribute byte for matched file */
unsigned short wr_time; /* time of last write to file */
unsigned short wr_date; /* date of last write to file */
char name[256]; /* asciiz name of matched file */
};

如果attrib的值为10H或(常量FA_DIREC),那么祝贺你,这就是你找到目录文件
cowman4 2003-09-15
  • 打赏
  • 举报
回复
非常感谢大家这么热心,但是你们说的方法我都试验了,当加入的时候,只要一编译,它下面的程序就抱错,而自身不报错
我的程序是这样的:
int changeJpgToIfile(docDir)
{
//这里是我想判断目录docDir是否存在的地方
/*******************************************************************/
HANDLE jpgFile;
int a;
jpgFile = INVALID_HANDLE_VALUE;
jpgFile = CreateFile(
jpgName,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if( jpgFile == INVALID_HANDLE_VALUE){
return -1;
}
a=iMain6( jpgFile,1);
return a;
}
psbeond 2003-09-15
  • 打赏
  • 举报
回复
进入指定的目录,如果能进入就存在,不能进入就不存在,或者遍历他的父目录,如果能遍历到你的目录就存在,好象是_findfirst, _findnext,还有chdir,我记不住了,你查一下msdn
wcq8303 2003-09-15
  • 打赏
  • 举报
回复
各位老兄,别人楼主问的是:判断文件夹是否存在??
你可以这样,试图在该文件夹下建立一文件,如果建立出现错误,就表明不存在.
比如:我们判断C盘下的AA文件夹是否存在,你就可以这样检测:
#include<stdio.h>
void main(){
FILE *fp;
if((fp=fopen("c:\\aa\\test.test","w"))!=NULL)
Printf("the folder is exist");
else Printf("ERROR!");
}
该程序通过VC6.0的测试!
cowman4 2003-09-15
  • 打赏
  • 举报
回复
是windows2000
guoxiaof 2003-09-15
  • 打赏
  • 举报
回复
在什么系统下呀?windows还是unix还是什么呀?
softwarrior 2003-09-15
  • 打赏
  • 举报
回复
用mkdir函数,看一下返回值就可以了
lxcc 2003-09-15
  • 打赏
  • 举报
回复
HANDLE CreateFile( LPCTSTR lpFileName, // 文件名指针
 DWORD dwDesiredAccess, // 访问模式
 DWORD dwShareMode, // 共享模式
 LPSECURITY_ATTRIBUTES lpSecurityAttributes, //安全属性
 DWORD dwCreationDisposition, // 创建方式
 DWORD dwFlagsAndAttributes, // 文件属性
 HANDLE hTemplateFile // 指向待复制属性的文件指针
);
判断CreateFile的返回值
cowman4 2003-09-15
  • 打赏
  • 举报
回复
我只是想判断一个普通的文件夹是否存在,难道没有一个现有的API或什么函数可以直接实现吗?
Bandry 2003-09-15
  • 打赏
  • 举报
回复
这个不太好办,如果目录有写的权限,将一个文件拷贝到该目录,如果成功,则存在,否则就不存在了。这个方法需要用户有这目录的写的权限。
拷贝文件用SHFILEOPSTRUCT
flybird66 2003-09-15
  • 打赏
  • 举报
回复
gz
有个设想你试试,把文件名改改,即如果文件夹是abc的话,读文件的时候让它读abc.*,在DOS中dir加这个参数是可以读出这个目录的,你可以在C++中试着读一下
cowman4 2003-09-15
  • 打赏
  • 举报
回复
老兄我要的是C++的而且是文件夹是否存在,不是文件
lyr311 2003-09-15
  • 打赏
  • 举报
回复
关注
nustchenhf 2003-09-15
  • 打赏
  • 举报
回复
#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" );
}
}

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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