2017-09-24 525 views
0

我想从控制台中的用户输入获取的路径获取目录中的所有文件。但我不断收到此错误'System.ArgumentException:'第二个路径片段不能是驱动器或UNC名称'我看过这个Second path fragment must not be a drive or UNC name - Create Subdirectory Error答案,它说错误是因为路径中的驱动器名称,但这并不使感。当我测试这样的代码时,它在路径硬编码时起作用WITH驱动器号。用户输入路径GetFiles()错误

DirectoryInfo d = new DirectoryInfo(@"C:\Users\Christopher Thesner\Desktop\Spoon\"); 
      dir = d.GetDirectories(); 
      files = d.GetFiles(); 

但是,当我尝试这样,其中路径存储在用户输入变量,它会引发错误。

DirectoryInfo d = new DirectoryInfo(path); 
      dir = d.GetDirectories(); 
      files = d.GetFiles(path); 

我试图从字符串获得目录名的路径是这样

directory = Path.GetDirectoryName(directory); 

这里建议以及Second path fragment must not be a drive or UNC name - Create Subdirectory Error但没有的样子。有任何想法吗?在此先感谢

+1

你想给的路径'GetFiles'在第二个片段,这会导致问题。你没有在第一个。删除该参数。 –

+0

@SamiKuhmonen非常感谢您指出。我一直在这里坐了大概一个小时,试图找出答案。一双新鲜的眼睛总是有帮助的。谢谢你纠正我的白痴 – TH3SN3R

回答

0

简单的例子:

private void Form1_Load(object sender, EventArgs e) 
    { 
     var path = Environment.CurrentDirectory; 
     List<String> lines = new List<string>(); 
     DirectoryInfo d = new DirectoryInfo(path); 
     var dir = d.GetDirectories(); 
     var files = d.GetFiles(); 
     lines.Add(String.Format("There are {0} directories in \"{1}\"", dir.Length, d.Name)); 
     lines.Add(String.Format("There are {0} files in \"{1}", files.Length, d.Name)); 
     foreach (var di in dir) 
     { 
      lines.Add(String.Format("There are {0} directories in \"{1}\"", dir.Length, d.Name)); 
      files = di.GetFiles(); 
      lines.Add(String.Format("There are {0} files in \"{1}", files.Length, d.Name)); 
     } 
     textBox1.Lines = lines.ToArray(); 
    } 
+0

我看我发贴太迟了!等到我达到50,然后我可以添加评论给其他人的帖子! –