I have a Windows program that prompts the user to input a file path, and file name. I then check that the file exists with [Directory.Exists](https://msdn.microsoft.com/en-us/library/system.io.directory.exists%28v=vs.110%29.aspx). 

Then the user inputs a filename. I check it using this [answer](https://stackoverflow.com/questions/62771/how-do-i-check-if-a-given-string-is-a-legal-valid-file-name-under-windows/63235#63235) to check whether the filename is valid or not(it may or may not yet exist).

Here is my code:

    using System;
    using System.IO;
    using System.Text.RegularExpressions;

    public static string GetFilePath()
    {
        string filePath = " ";
        bool directoryFound = true;
        do
        {
            if (!directoryFound)
            {
                Console.WriteLine("This directory not found:\n{0}\nPlease double check file path. \nPlease Double check that this program has read and write access to the directory.\n", filePath);
            }

            Console.WriteLine("Please specify file location:");
            filePath = @Console.ReadLine(); 
            Console.Clear();

            directoryFound = Directory.Exists(filePath);
            if (filePath.Length >= 240) //This looks like a bad solution
            {
                directoryFound = false;
                Console.WriteLine("Please keep the filepath under 240 chars so that you still are able to provide a name for the file.");
            }

        } while (!directoryFound);

        filePath = GetFileName(filePath);

        return filePath ;
    }
        
        public static string GetFileName(string filePath)
        {
            string fileName = " ";
            bool isValidName = true;
            int fileNameMaxLength = 0;
            do
            {
                if (!isValidName)
                {
                    
                    Console.WriteLine("{0} \nis not a valid filename. Make sure you enter a valid filename.\nYour max filename length should be {1}", fileName, fileNameMaxLength);
                }

                Console.WriteLine("Please enter the name of the file:");
                fileName = Console.ReadLine();
                Console.Clear();

                string illegalChars = @"^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*:\"";|/]+$";

                isValidName = Regex.IsMatch(fileName, illegalChars, RegexOptions.CultureInvariant);

                if (fileName.Length + filePath.Length > 254) //254 instead of 260 in order to account for file extension
                {
                    isValidName = false;
                    fileNameMaxLength = 254 - filePath.Length;
                }

            } while (!isValidName);
            return Path.Combine(filePath, (fileName + ".ppm"));
        }

    }


How could I make this be more elegant? I especially don't like:

    if(filePath.Length >= 240)
I need to make sure that 

 - The filepath exists
 - The filename is valid
 - That filename + filepath <= 260 (this is max char limit on windows)
 - That my program doesn't crash while doing this