如何验证从控制台读取的输入是文件名还是文件完整路径

时间:2016-03-31 06:42:53

标签: c# xml directory console-application filepath

我在C#中有一个控制台应用程序,我想加载一个xml文件,该文件的路径是通过console.readline()提供的。但是,我想从提供的路径加载文件,但如果用户只提供文件的名称,我想在运行应用程序的本地文件夹中搜索它。我怎么知道何时只将文件名作为输入或文件完整路径。 我使用了var isFileNameOnly = ((xmlFilePath.IndexOf("\\")) == -1);

来管理它

但是这个丑陋而且可能非常多。

完整代码:

        var xmlFilePath = Console.ReadLine();
        var xmlFile = new XmlDocument();

        var isFileNameOnly = ((xmlFilePath.IndexOf("\\")) == -1);
        try
        {
            if (isFileNameOnly)
            {
                xmlFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, xmlFilePath);
            }

            xmlFile.Load(xmlFilePath);

        }

THX

3 个答案:

答案 0 :(得分:1)

您可以使用Exists()方法检查用户输入的文件名是否确实存在。如果返回true则加载文件。

File.Exists(xmlFilePath) 

如果只提供XmlDocument.Load()文件名将尝试在BaseDirectory本身中查找该文件。因此,如果file.Exists()返回true,您可以假设XmlDocument.Load将加载它,无论它是本地路径还是绝对路径。

答案 1 :(得分:0)

这将返回false:

bool isFolder = Path.IsPathRooted(@"Text.txt");

这将返回true:

bool isFolder = Path.IsPathRooted(@"C:\Text");

答案 2 :(得分:0)

你的方法与我选择的相同。如果param不包含任何目录定界符char,则它必须只是文件名。如果你这样做可能会更优雅一点:

bool isFileNameOnly = !xmlFilePath.Contains(Path.DirectorySeparatorChar.ToString());