我在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
答案 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());