当前位置:编程学习 > C/C++ >>

如何获取文件路径和目录

MFC应用
 
一些简单获取路径、子路径、文件目录和判断路径有效的方法
 
 
// GetSubPath 从路径名中得到子路径  
LPCTSTR CDirTreeCtrl::GetSubPath(LPCTSTR strPath)  
{  
    static CString strTemp;  
    int iPos;  
    strTemp = strPath;  
    if ( strTemp.Right(1) == ’\\’ )  
    strTemp.SetAt( strTemp.GetLength() - 1, ’\0’ );  
    iPos = strTemp.ReverseFind( ’\\’ );  
    if ( iPos != -1 )  
    strTemp = strTemp.Mid( iPos + 1);  
    return (LPCTSTR)strTemp;  
}  
// FindSubDir 找到子目录  
BOOL CDirTreeCtrl::FindSubDir( LPCTSTR strPath)  
{  
    CFileFind find;  
    CString strTemp = strPath;  
    BOOL bFind;  
    if ( strTemp[strTemp.GetLength()-1] == ’\\’ )  
    strTemp += "*.*";  
    else  
    strTemp += "\\*.*";  
    bFind = find.FindFile( strTemp );  
    while ( bFind )  
    {  
  
        bFind = find.FindNextFile();  
        if ( find.IsDirectory() && !find.IsDots() )  
        {  
        return TRUE;  
        }  
        if(!find.IsDirectory()&&m_bFiles && !find.IsHidden() )  
        return TRUE;  
    }  
    return FALSE;  
}  
///获取全路径  
CString CDirTreeCtrl::GetFullPath(HTREEITEM hItem)  
{  
    CString strReturn;  
    CString strTemp;  
    HTREEITEM hParent = hItem;  
    strReturn = "";  
    while ( hParent )  
    {  
    strTemp = GetItemText( hParent );  
    strTemp += "\\";  
    strReturn = strTemp + strReturn;  
    hParent = GetParentItem( hParent );  
    }  
    strReturn.TrimRight( ’\\’ );  
    return strReturn;  
}  
// IsValidPath 判断路径是否有效  
BOOL CDirTreeCtrl::IsValidPath(LPCTSTR strPath)  
{  
    HTREEITEM hChild;  
    CString strItem;  
    CString strTempPath = strPath;  
    BOOL bFound = FALSE;  
    CFileFind find;  
    hChild = GetChildItem( TVI_ROOT );  
    strTempPath.MakeUpper();  
    strTempPath.TrimRight(’\\’);  
    while ( hChild )  
    {  
    strItem = GetItemText( hChild );  
    strItem.MakeUpper();  
    if ( strItem == strTempPath.Mid( 0, strItem.GetLength() ) )  
    {  
    bFound = TRUE;  
    break;  
    }  
    hChild = GetNextItem( hChild, TVGN_NEXT );  
    }  
    if ( !bFound )  
    return FALSE;  
    strTempPath += "\\nul";  
    if ( find.FindFile( strTempPath ) )  
    return TRUE;  
    return FALSE;  
}  

 

 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,