c# – 파일명, 경로 점검

파일명 및 파일경로가 적합한지 확인하는 메소드입니다.
Path.GetInvalidPathChars()와 Path.GetInvalidFileNameChars()는 파일과 경로에서 사용할 수 없는 문자들을 반환해 줍니다.
이를 정규식으로 점검하여 사용할 수 없는 문자열이 포함되어 있는지 체크하는 방식입니다.

 

private static Regex m_filePathCheck = new Regex("[" + Regex.Escape(new string(Path.GetInvalidPathChars())) + "]");
private static Regex m_fileNameCheck = new Regex("[" + Regex.Escape(new string(Path.GetInvalidFileNameChars())) + "]");

/// <summary>
/// 파일 경로 및 파일명 점검
/// </summary>
/// <param name="pFileFullPath"></param>
/// <returns></returns>
public static bool IsValidWindowsPath(string pFileFullPath)
{
    string filePath = Path.GetDirectoryName(pFileFullPath);
    string pathRoot = Path.GetPathRoot(pFileFullPath).ToUpper();
    string fileName = pFileFullPath.Replace(filePath + "\\", ""); // Path.GetFileName는 공백때문에 잘못 가져오는 경우가 있다.

    // 패스 문자열 점검
    if (m_filePathCheck.IsMatch(filePath)) return false;

    // 파일 문자열 점검
    if (m_fileNameCheck.IsMatch(fileName)) return false;

    // 드라이브 체크
    if (Directory.GetLogicalDrives().Contains(pathRoot) == false) return false;

    return true;
}

 

댓글 남기기