【问题标题】:Reading the correct directory读取正确的目录
【发布时间】:2016-12-01 17:51:04
【问题描述】:

我已经测试了代码并且目录得到了正确的输入,但由于某种原因它找不到它。为什么我找不到任何目录?

这是我目前非常简单的代码。

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");
            }
        }
    }

【问题讨论】:

  • 你认为什么是“正确的输入”?
  • 你没有把目录名和文件名结合起来,值是什么?我会使用类似 Path.Combine(dirName, fileName)
  • dirName 的值是多少? fileName呢?
  • 这没有意义。您将从 textBoxes 收到的任何值分配给 dirName 和 fileName。您是否在文本框中输入了目录和文件的路径?
  • 对,值来自文本框。

标签: c# directory


【解决方案1】:

那是因为我猜你正在通过输入控件以这种方式“C:/examplePath /”传递目录路径,并且应该以这种方式声明“C:\\examplePath”,因为转义字符,并且可能你会进一步得到另一个错误,因为当你要求一个文件的存在时,你必须声明它连接目录路径和文件名(及其扩展名)。

所以最后的字符串应该是这样的 "c:\\exampleDir\\examplefile.ext"

或者干脆你应该试试:

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

然后你使用“fullPathFile”而不是“fileName”变量。

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

【讨论】:

  • 这不适用于从 ui 输入的文本,它只适用于在设计时编码的文本。此外,正斜杠 (/) 也可以,不需要转义。此外,您可以手动组合路径,使用 Path 静态帮助程序可以无限地简化您的代码!:)
【解决方案2】:

根据您的代码,文件名和目录名似乎来自两个不同的文本框控件。而且您也不会对文件路径进行任何形式的组合(或者看起来如此)。因此,当您调用 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");
    }
}

【讨论】:

  • 好吧,这更有意义。
猜你喜欢
  • 1970-01-01
  • 2013-02-20
  • 2018-06-04
  • 2021-06-12
  • 2012-01-15
  • 2011-01-29
  • 2012-11-25
  • 1970-01-01
相关资源
最近更新 更多