C++ 如何判断路径是文件还是目录

C++如何判断一个给定的路径是文件还是目录?请给出思路,需要用到的库函数,以及需要包含的库文件。另外请教如何遍历一个目录下的所有文件,包含子目录。也请给出思路。具体算法不... C++如何判断一个给定的路径是文件还是目录?请给出思路,需要用到的库函数,以及需要包含的库文件。另外请教如何遍历一个目录下的所有文件,包含子目录。也请给出思路。具体算法不要求贴出。 展开
 我来答
byzxybd
2012-07-30 · TA获得超过455个赞
知道小有建树答主
回答量:731
采纳率:100%
帮助的人:424万
展开全部
文件结构有一个属性,对应着一个宏。查找文件时得到文件结构,可以判断这个属性是不是目录。
gfm688
推荐于2018-05-10 · TA获得超过183个赞
知道答主
回答量:89
采纳率:100%
帮助的人:71.1万
展开全部
GetFileAttributes 返回FILE_ATTRIBUTE_DIRECTORY就是目录
自己查下MSDN吧

遍历目录用FindFirstFile、FindNextFile、FindClose

参考资料: http://blog.csdn.net/sunyanay/article/details/6203323

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水晶扇
2012-07-29 · TA获得超过1536个赞
知道大有可为答主
回答量:837
采纳率:100%
帮助的人:1103万
展开全部
------------------------------------------------------------------------------------
No.4 /*文件处理之浏览文件*/
#include <commdlg.h>
1.定义:
OPENFILENAME file={0};
2.为file.lpstrFile申请空间:
char lpPath[260]={0};
file.lpstrFile=lpPath;
3.为file赋其他初值:
file.lStructSize=sizeof(OPENFILENAME);
file.lpstrFile=lpPath;
file.nMaxFile=260;
file.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files\0*.*\0\0";
file.nFilterIndex=1;
4.调用GetOpenFileName函数:
if(GetOpenFileName(&file)!=0)
{...};
就可得到文件名,在lpPath所指字符串中。
------------------------------------------------------------------------------------
No.5 /*文件处理之搜索文件*/
#include <afx.h>
1.初始化,设置搜索条件(路径,后缀名等,例中由dir决定):
CFileFind ff;
CString dir("D:\\MyDir\\*.txt");
BOOL bfile=ff.FindFile(dir);
2.循环调用ff.FindNextFile函数进行搜索:
while(bfile)
{
bfile=ff.FindNextFile();
if(!(ff.IsDots())&&!(ff.IsDirectory()))
{...};
};
3.搜索结果有三种:
(1)Dots: "."表示本层目录,".."表示上一层目录,此时ff.IsDots()返回值为TRUE;
(2)Directory: 子目录,此时ff.IsDirectory()返回值为TRUE;
(3)文件
4.对每个查找到的文件可以查看文件信息:
(1)BOOL GetCreationTime(CTime &); 或BOOL GetCreationTime(FILETIME*);
BOOL GetLastAccessTime(CTime &); 或BOOL GetLastAccessTime(FILETIME*);
BOOL GetLastWriteTime(CTime &); 或BOOL GetLastWriteTime(FILETIME*);
(2)CString GetFileName(); //文件名.后缀名
(3)CString GetFilePath(); //全路径+文件名.后缀名
(4)CString GetFileTitle(); //只有文件名
(5)CString GetRoot();
(6)DWORD GetLength(); 或__int64 GetLength64();
(7)BOOL IsHidden();
BOOL IsNormal();
BOOL IsReadOnly();
BOOL IsSystem();
BOOL IsTemporary();
------------------------------------------------------------------------------------
No.6 /*文件处理之一般处理*/
#include <winbase.h>
1.进入文件夹(设置工作文件夹):
chdir(LPTSTR path);
SetCurrentDirectory(LPCTSTR lpPathName);
2.文件删除:
BOOL DeleteFile(LPTSTR lpFileName);
3.文件复制:
BOOL CopyFile(LPCTSTR lpExistingFileName,LPCTSTR lpNewFileName,BOOL bFailIfExists);其中参数bFailIfExists告诉系统当目标文件存在时如何操作,当bFailIfExists为true时,如果目标文件存在,则函数执行失败;当bFailIfExists为false时,如果目标文件存在,则覆盖目标文件。
4.文件重命名:
BOOL RenameFile(const AnsiString OldName, const AnsiString NewName);
5.返回文件的完整的路径名和文件名:
AnsiString ExpandFileName(AnsiString FileName);
6.返回指定文件的文件名:
AnsiString ExtractFileName(AnsiString FileName);
7.返回指定文件的扩展名:
AnsiString ExtractFileExt(AnsiString FileName);
8.创建新文件夹:
BOOL CreateDirectory( LPCTSTR lpPathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes);lpSecurityAttributes为安全属性。
9.移动存在的文件或目录:
BOOL MoveFile(LPCTSTR lpExistingFileName,LPCTSTR lpNewFileName);
10.创建文件(即打开文件):
CreateFile(...);
11.关闭文件:
CloseHandle();

/********版权所有,抄袭必究********/
/********sunlight12346*********/
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式