我使用Directory.CreateDirectory(string)
方法创建文件夹,现在的问题是如果用户输入字符串为:
"C:\folder1"
然后它在相应的位置创建文件夹,很好我。
但如果他写道
"C:\\\\\\\\\\\\\\\\\\\\\\\\\folder1"
它也导航到相同的路径,创建文件夹,并没有给出任何错误,这对我来说是一个问题。
所以为了解决上面提到的问题,我尝试在路径上做一些验证,然后我尝试使用Path.GetFullPath() and other Path methods
,我看到:
Path.GetFullPath("C:\\\\folder1") no exception or error
Path.GetFullPath("C:\\\folder1") exception or error
不知何故,当反斜杠的数量为偶数时,不会抛出任何异常,但是当计数为奇数时,则抛出异常。
当用户输入如下路径时,我怎样才能实现这个简单的事情:
C:\folder 1 valid path
C:\\\\\\folder1 invalid path
如果需要进一步的详细信息,请告诉我
使用FolderBrowserDialog
的可能解决方案 - 用户不会手动输入路径,而是通过FolderBrowserDialog
选择/创建它。
下面的代码将返回文件夹中的所有文件,但您可以修改它以返回您需要的任何信息。
private void Form1_Load(object sender, EventArgs e)
{
//
// This event handler was created by double-clicking the window in the designer.
// It runs on the program's startup routine.
//
DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == DialogResult.OK)
{
//
// The user selected a folder and pressed the OK button.
// We print the number of files found.
//
string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
MessageBox.Show("Files found: " + files.Length.ToString(), "Message");
}
}
如果你想从中获得正确的路径,也许你可以使用以下技术(除了你已经拥有的,当然,这只是为了删除重复的反斜杠)
就像是:
pathString = "C:\\\\\\folder1";
splitString = pathString.Split('\\');
nonEmpty = splitString.Where(x => !string.IsNullOrWhiteSpace(x));
reconstructed = string.Join("\\", nonEmpty.ToArray());
消毒道路怎么样?
char[] separator = new char[] { System.IO.Path.DirectorySeparatorChar };
string inputPath = "C:\\\\\\\folder1";
string[] chunks = inputPath.Split(separator, StringSplitOptions.RemoveEmptyEntries);
string validPath = String.Join(new string(separator), chunks);