我正在使用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
如果需要更多详细信息,请告诉我
答案 0 :(得分:0)
使用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");
}
}
答案 1 :(得分:0)
如果您想从中获得正确的路径,也许可以使用以下技术(当然,除了已经拥有的技术之外,这只是删除重复的反斜杠)
类似的东西:
pathString = "C:\\\\\\folder1";
splitString = pathString.Split('\\');
nonEmpty = splitString.Where(x => !string.IsNullOrWhiteSpace(x));
reconstructed = string.Join("\\", nonEmpty.ToArray());
答案 2 :(得分:0)
如何清洁路径?
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);