如何删除文件而不显示位置

时间:2019-06-10 11:35:32

标签: c# winforms

使用带有按钮的简单形式删除Windows Temp目录中的文件,无论该文件是否存在,如果按下该按钮,则表示已完成。

对于用户不知道位置的文件:最终文件将被混淆,但是如果找不到文件,我不需要表格抛出错误,并显示错误消息,指出在位置未找到文件.....

我尝试使用该代码,它似乎打开了一个控制台。我试图添加test123.txt文件,但该文件没有删除。

private void button1_Click(object sender, EventArgs e)
{
    string strCmdText;
    strCmdText = "del /q/f/s %TEMP%/test123.txt ";
    System.Diagnostics.Process.Start("CMD.exe", strCmdText);
}

我希望能够删除文本文件,而用户不知道该文件的位置,即使该文件不存在。

2 个答案:

答案 0 :(得分:4)

您可以使用以下代码执行此操作:

private void button1_Click(object sender, EventArgs e)
{
    string tmpDir = Environment.ExpandEnvironmentVariables("%TEMP%");
    string pathToFile = Path.Combine(tmpDir, "test123.txt");
    if (File.Exists(pathToFile))
    {
        File.Delete(pathToFile);
    }
    //Print completed where you want
}

请注意,将临时文件的名称附加到方法外部的变量并使用它确实更好。在这种情况下,如果您想使用名称中的时间戳,uuid等来生成没有硬编码名称的临时文件,则对您有帮助

更新以下是我的回答Hans Passant,建议在System.IO的Path类中使用特殊方法来获取%TEMP%文件夹的路径。在阅读了MSDN上的文档之后,我同意这将是获取%TEMP%文件夹路径的更好方法。

private void button1_Click(object sender, EventArgs e)
{
    string tmpDir = Path.GetTempPath();
    string pathToFile = Path.Combine(tmpDir, "test123.txt");
    if (File.Exists(pathToFile))
    {
        File.Delete(pathToFile);
    }
    //Print completed where you want
}

答案 1 :(得分:0)

删除文件的最佳方法是建议使用@Lemm。但是,如果您确实要使用cmd,则可以尝试以下代码:

ProcessInfo = new ProcessStartInfo("cmd", "/k del /q/f/s %TEMP%/test123.txt");
ProcessInfo.CreateNoWindow = true;
ProcessInfo.UseShellExecute = false;
System.Diagnostics.Process proc = System.Diagnostics.Process.Start(ProcessInfo);