2017-09-24 29 views
0

コンソールのユーザー入力から取得したパスから、ディレクトリ内のすべてのファイルを取得しようとしています。しかし、私はこのエラー 'System.ArgumentExceptionが発生し続ける:'セカンダリパスの断片は、ドライブまたはUNC名ではいけません '私はこのSecond path fragment must not be a drive or UNC name - Create Subdirectory Errorの答えを見てきました、エラーはパス内のドライブ名のためですが、センス。このようなコードをテストすると、パスがハードコードされているときに動作しますドライブ文字。ユーザー入力パスで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); 

私もここSecond path fragment must not be a drive or UNC name - Create Subdirectory Errorが、無表情を示唆したように、この

directory = Path.GetDirectoryName(directory); 

のようなパスとして文字列からディレクトリ名を取得しようとしています。何か案は?事前のおかげで

+1

。あなたは最初のものにそれを持っていません。そのパラメータを削除します。 –

+0

@SamKuhmonenそれを指摘してくれてありがとうございます。私はそれを理解しようと約1時間ここに座っている。新鮮な眼のペアが常に助けます。私の馬鹿馬鹿を訂正してくれてありがとう – TH3SN3R

答えて

0

簡単な例:あなたが問題を引き起こし二スニペットに `GetFiles`へのパスを与えるためにしようとしている

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になるまで待ってから、他の人の投稿にコメントを追加できます。 –

関連する問題