C# 如何检查特定文件并将其删除
我使用的是C#winform,我想在其中搜索文件夹中的特定文件并将其删除。 我怎样才能做到这一点。我正在尝试以下代码C# 如何检查特定文件并将其删除,c#,visual-studio-2010,visual-studio,C#,Visual Studio 2010,Visual Studio,我使用的是C#winform,我想在其中搜索文件夹中的特定文件并将其删除。 我怎样才能做到这一点。我正在尝试以下代码 private void button4_Click(object sender, EventArgs e) { string Filename = img_path.Text; // here i have the filename "sample.grf" if (Directory.GetFiles(@"E:\Debug").Where
private void button4_Click(object sender, EventArgs e)
{
string Filename = img_path.Text; // here i have the filename "sample.grf"
if (Directory.GetFiles(@"E:\Debug").Where(x => x.Name == Filename).Any()) // getting error here
{
// i want to search here in above folder and delete the file.. how to do this
System.IO.File.Delete(/dont know how to delte the particular file);
}
}
请提供帮助只需这样做:
File.Delete(Path.Combine(@"E:\Debug", Filename));
不需要先检查文件是否存在。否则,File.Delete
将不起任何作用
如果您可能有任何安全问题(例如用户输入。\SomethingElse\Important.doc),则需要确保该字段仅包含一个文件名。一种方法是:
if (Filename.ToCharArray().Intersect(Path.GetInvalidFileNameChars()).Any())
return;
因此,您的整个功能可能如下所示:
private void button4_Click(object sender, EventArgs e)
{
string Filename = img_path.Text;
if (string.IsNullOrEmpty(Filename))
return;
if (Filename.ToCharArray().Intersect(Path.GetInvalidFileNameChars()).Any())
return;
File.Delete(Path.Combine(@"E:\Debug", Filename));
}
另外,按钮4\u Click
不是一个很好维护的名称。您可能想考虑将按钮和该函数重命名为有意义的东西。 如果您知道该文件,只需“代码>删除())<代码>:
File.Delete("C:\\mypath\\myfile.txt");
对于已经不存在的文件,不会引发异常。为什么不简单地使用file.Exists
?另外,获取目录时出现了什么错误。GetFiles
不会像您假设的那样返回FileInfo[]
,请使用if(new DirectoryInfo(@“E:\Debug”).GetFiles().Where(x=>x.Name==Filename.Any())
,但如果(File.Exists(Path.Combine(@“E:\Debug”,Filename)),您可以执行)
x是一个字符串,因此可能x==Filename,我认为每个人都忽略了这一点,因为他可能不知道整个路径。只需输入文件名。删除按钮中的所有代码,单击,然后添加一行:文件。删除(Path.Combine(@“E:\Debug”,img_Path.Text))代码>'string'不包含'Name'的定义,并且找不到接受'string'类型的第一个参数的扩展方法'Name'(是否缺少using指令或程序集引用?@RadioSpace是的,我注意到了这一点,并在发布注释后立即编辑了注释(刷新页面)错误:-进程无法访问文件“\\bin\Debug\sample.grf”,因为另一个进程正在使用该文件。
使用abve文件发送到打印机。之后我需要删除。有没有什么方法可以让我等到整个过程结束,然后再研究这个问题file@StacyKebler在尝试删除文件之前,必须关闭文件上的所有文件句柄。因为我不知道你在代码的其他地方对这个文件做什么,所以我在这里帮不上什么忙。这是另一个问题。