파일명 및 파일경로가 적합한지 확인하는 메소드입니다.
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;
}


