阅读正确的目录

问题描述:

我测试了代码,目录得到正确的输入,但由于某种原因它找不到它。有什么我想念我为什么找不到任何目录?阅读正确的目录

这是我现在的代码非常简单。

public partial class Form1 : Form 
{ 
    string fileName; 
    string dirName;  

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     dirName = textBox1.Text; 
     fileName = textBox2.Text; 

     if (System.IO.Directory.Exists(dirName)) 
     {    
      if (System.IO.File.Exists(fileName)) 
      {      
       System.IO.File.Delete(fileName); 
      } 
      else 
      { 
       MessageBox.Show("Invalid Directory or File Name"); 
      } 
     } 
    } 
+2

你认为什么是“正确的输入”? – itsme86

+0

你没有组合目录名和文件名,值是什么?我会使用类似Path.Combine(dirName,fileName) –

+0

'dirName'的值是什么?那么'fileName'呢? –

那是因为我想你是通过输入控制传递的目录路径这样的“C:/ examplePath /”,它应该以这种方式宣告“C:\\ examplePath”因为逃逸字符,并且可能会进一步发生错误,因为当您要求存在文件时,必须声明它将目录路径加上文件名(及其扩展名)连接起来。

所以最终的字符串应该是这样的 “C:\\ \\ exampleDir examplefile.ext”

或者干脆你应该试试:

dirName = string.Format("@{0}", textBox1.Text); 
fullPathFile = string.Format("{0}/{1}", dirName, textBox2.Text); 

然后使用 “fullPathFile” 代替“fileName”变量。

不要忘记调试你的应用程序,以确保字符串值是什么。

+1

这wouldnt适用于从UI输入的文本,它只适用于在设计时编码的文本。此外,正斜杠(/)是好的,不需要逃脱。此外,你手动组合路径,使用Path静态助手简化你的代码没有结束!:) –

根据您的代码,它显示fileName和dirName来自两个不同的文本框控件。而且你也不会做任何合并文件路径的方式(或者看起来如此)。所以,当你打电话给Directory.Exists()这是有道理的,这将工作,但它无法找到该文件。当你使用File.Exists()时,你不仅需要传入文件名,还需要传入它所在的目录。为此,请使用Path.Combine()方法。

if (System.IO.Directory.Exists(dirName)) 
{ 
    string filePath = System.IO.Path.Combine(dirName, fileName); 

    if (System.IO.File.Exists(filePath)) 
    { 
     System.IO.File.Delete(filePath); 
    } 

    else 
    { 
     MessageBox.Show("Invalid Directory or File Name"); 
    } 
} 
+0

好的,这是更有意义。 –