阅读正确的目录
我测试了代码,目录得到正确的输入,但由于某种原因它找不到它。有什么我想念我为什么找不到任何目录?阅读正确的目录
这是我现在的代码非常简单。
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");
}
}
}
那是因为我想你是通过输入控制传递的目录路径这样的“C:/ examplePath /”,它应该以这种方式宣告“C:\\ examplePath”因为逃逸字符,并且可能会进一步发生错误,因为当您要求存在文件时,必须声明它将目录路径加上文件名(及其扩展名)连接起来。
所以最终的字符串应该是这样的 “C:\\ \\ exampleDir examplefile.ext”
或者干脆你应该试试:
dirName = string.Format("@{0}", textBox1.Text);
fullPathFile = string.Format("{0}/{1}", dirName, textBox2.Text);
然后使用 “fullPathFile” 代替“fileName”变量。
不要忘记调试你的应用程序,以确保字符串值是什么。
这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");
}
}
好的,这是更有意义。 –
你认为什么是“正确的输入”? – itsme86
你没有组合目录名和文件名,值是什么?我会使用类似Path.Combine(dirName,fileName) –
'dirName'的值是什么?那么'fileName'呢? –